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

时间:2021-03-23 14:41:52

标签: python

我有一本字典

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

我想提取姓名并将它们存储到 x 中,即(Alex、Smith、John、Mike)和另一个 y 变量中我想存储Poor、Aboveaverage、Verygood、Excellence。< /p>

我如何完成这项任务,因为我无法使用键从字典中选择特定值?

我尝试执行 d.values(), 但它正在返回 dict_values([['Alex', ' 10', 'Poor'], ['Smith', ' 100', 'Aboveaverage'], ['John', ' 98', 'Verygood'], ['Mike', ' 4', 'Excellent']])

3 个答案:

答案 0 :(得分:1)

选项

您可以使用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 方法的工作原理

* 前缀运算符将提供给它的可迭代对象中的值作为单独的参数传递,实质上是进行调用

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

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

答案 1 :(得分:0)

dict 的值是数组。如果您确定数组中的第一个位置是名称,您可以遍历字典并附加到 xvalues[0]yvalues[2]。这是一种易于理解的方法

  x = []
  y = []

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

答案 2 :(得分:0)

获取所有名称:

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

或者更简单地说,使用列表推导式:

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

我认为您可以弄清楚如何对 y 值执行相同的操作。