从字典中的列表中提取特定值

2024-05-15 16:53:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典

d = {'B201': ['Alex', ' 10', 'Poor'],
     'N298': ['Smith', ' 100', 'Aboveaverage'],
     'N200': ['John', ' 98', 'Verygood'],
     'B299': ['Mike', ' 4', 'Excellent']}

我想提取名称并将它们存储到x中,即(Alex、Smith、John、Mike)和另一个y变量中,我想存储差的、高于平均水平的、非常好的、优秀的

由于无法使用键从字典中选择特定值,如何实现此任务

我试着执行d.values(), 但它正在回归


Tags: 名称字典johnmikesmithalexexcellentpoor
3条回答

dict的值是数组。如果您确定数组中的第一个位置是名称,则可以在字典中迭代,并将x附加到values[0]y附加到values[2]。这是一种容易理解的方法

  x = []
  y = []

  for v in d.values():
     x.append(v[0])
     y.append(v[2])

要获取所有名称,请执行以下操作:

x = []
for value in d.values():
    x.append(value[0])

或者更简单地说,使用列表理解:

x = [value[0] for value in d.values()]

我认为您可以找出如何对y值执行相同的操作

选项

您可以使用list comprehensions

x = [entry[0] for entry in d.values()]
y = [entry[2] for entry in d.values()]

或者,您可以迭代字典值:

x = []
y = []
for entry in d.values():
    x.append(entry[0])
    y.append(entry[2])

如果您想变得更优雅一点,可以使用zip

x, _, y = zip(*d.values())

zip方法的工作原理

*前缀运算符将提供给它的iterable中的值作为单独的参数传递,基本上进行调用

zip(['Alex', ' 10', 'Poor'], ['Smith', ' 100', 'Aboveaverage'], ['John', ' 98', 'Verygood'], ['Mike', ' 4', 'Excellent'])

然后zip函数返回一个包含每个参数的第一个元素的列表,一个包含每个参数的第二个元素的列表,等等。我们将这些列表分配给xy,再加上一个名为_的临时变量,我们忽略它

相关问题 更多 >