python-2.7 - 如何获取列表中值的键
问题描述
假设我有一本这样的字典:
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
. 在不改变字典结构的情况下,我怎样才能实现我的目标?
解决方案
您可以使用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
)。
推荐阅读
- javascript - 如何从 React 中的 1 个 onClick 函数访问多个按钮?
- java - 何时使用回调而不是普通函数?
- python-3.x - 创建我自己的文本分类器 - 如何创建一个新列来检查是否键入文本并跨多行返回组
- linux - 如何修复 jpg 文件的“[:参数过多”
- javascript - “Window.onload”在 Node.js 中不起作用
- javascript - PhoneGap 不在移动设备上显示页面
- python - 几个小时后,Django 图像和内容消失了
- android - 如何解谜
values.xml 中的错误? - python - 将 argparse 与格式化的位置参数一起使用
- mongodb - 如何创建具有可变日期的部分索引?