我有一本字典
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']])
。
答案 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(['Alex', ' 10', 'Poor'], ['Smith', ' 100', 'Aboveaverage'], ['John', ' 98', 'Verygood'], ['Mike', ' 4', 'Excellent'])
zip
函数然后返回一个包含每个参数的第一个元素的列表,一个包含每个参数的第二个元素的列表,等等。我们将这些列表分配给 x
和 y
,加上我们忽略的名为 _
的临时变量。
答案 1 :(得分:0)
dict 的值是数组。如果您确定数组中的第一个位置是名称,您可以遍历字典并附加到 x
的 values[0]
和 y
的 values[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
值执行相同的操作。