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

Python 从字典中的列表中提取特定值,python,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 = {'B201': ['Alex', ' 10', 'Poor'],
     'N298': ['Smith', ' 100', 'Aboveaverage'],
     'N200': ['John', ' 98', 'Verygood'],
     'B299': ['Mike', ' 4', 'Excellent']}
我想提取姓名并将其存储到
x
,即(Alex、Smith、John、Mike)和另一个
y
变量中,我想存储较差、高于平均水平、非常好、优秀的姓名

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

我尝试执行
d.values()
, 但它返回的是
dict_值([[Alex]、[10]、[Poor]、[Smith]、[100]、[Over Average]、[John]、[98]、[Verygood]、[Mike]、[4]、[Excellent])
您可以使用:

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

x = []
y = []
for entry in d.values():
    x.append(entry[0])
    y.append(entry[2])
如果您想变得更加优雅,可以使用:

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

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

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

dict的值是数组。如果您确定数组中的第一个位置是名称,您可以在字典中迭代并将
x
值[0]和
y
值[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
值执行相同的操作。

我要发布的是简洁的答案。这不是幻想,这是最疯狂的描述。那种描述有点开玩笑。这不是很多人都会想到的即时解决方案,而且它有点优雅(特别是与循环相比)。您还可以使用元组解包来获取第一个和最后一个值,如:
对于name,u,d.values()中的status:…
x = []
for value in d.values():
    x.append(value[0])
x = [value[0] for value in d.values()]