如何获取列表中值的键
How to get key for a value in a list
假设我有这样一本字典:
d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'],
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09'] }
还有一个变量:s = '04'
我的目标是在 d
中找到对应于值列表中 s
的键。所以,我要return'Q3'。
for k, v in d.items():
for item in v:
if s == item:
print(d[v])
上面抛出一个TypeError: unhashable type: 'list
。在不改变字典结构的情况下,如何实现我的目标?
您可以使用 in
来检查一个元素是否在列表中,而无需在列表中添加额外的 for
:
d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'],
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09']}
s = '04'
for k, v in d.items():
if s in v:
print(k, d[k])
输出:
Q3 ['04', '05', '06']
您得到 TypeError
是因为您试图将列表 (v
) 用作字典键 (d[v]
),但由于列表不可散列,因此它们不能'不是键,而是使用 d[k]
既正确又直观(因为 k
是 key
)。
假设我有这样一本字典:
d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'],
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09'] }
还有一个变量:s = '04'
我的目标是在 d
中找到对应于值列表中 s
的键。所以,我要return'Q3'。
for k, v in d.items():
for item in v:
if s == item:
print(d[v])
上面抛出一个TypeError: unhashable type: 'list
。在不改变字典结构的情况下,如何实现我的目标?
您可以使用 in
来检查一个元素是否在列表中,而无需在列表中添加额外的 for
:
d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'],
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09']}
s = '04'
for k, v in d.items():
if s in v:
print(k, d[k])
输出:
Q3 ['04', '05', '06']
您得到 TypeError
是因为您试图将列表 (v
) 用作字典键 (d[v]
),但由于列表不可散列,因此它们不能'不是键,而是使用 d[k]
既正确又直观(因为 k
是 key
)。