首页 > 解决方案 > 如何获取列表中值的键

问题描述

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

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. 在不改变字典结构的情况下,我怎样才能实现我的目标?

标签: python-2.7dictionarykey-value

解决方案


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


推荐阅读