如何获取列表中值的键

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] 既正确又直观(因为 kkey)。