如何获取列表中的值的键

时间:2019-09-05 13:47:38

标签: python-2.7 dictionary key-value

假设我有一个这样的字典:

d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'], 
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09'] }

还有一个变量:s = '04' 我的目标是在d中找到与值列表中的s相对应的键。因此,我想返回“ Q3”。

 for k, v in d.items():
   for item in v:
     if s == item:
        print(d[v])

以上内容引发了TypeError: unhashable type: 'list。在不更改字典结构的情况下,如何实现我的目标?

1 个答案:

答案 0 :(得分:1)

您可以使用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)。