dic = {'key1': ["value1", "value2"], 'key2': ["value4", "value5"] } "value4" in [x for v in dic.values() for x in v] >> True我想打印value4的键,而不是True
3 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
python字典经过优化,可以通过键而不是反向键来访问值,因此,这里没有比遍历dict中的所有条目更好的选择了:
for key, values in dic.items():
if 'value4' in values:
print(key)
break

江户川乱折腾
TA贡献1851条经验 获得超5个赞
对于一个孤立的电话,您应该迭代dic和break按@ IvayloStrandjev的解决方案。
对于重复的调用,最好反转字典以保持O(1)查找的复杂性。假设您的值不重叠:
dic = {'key1': ["value1", "value2"],
'key2': ["value4", "value5"]}
dic_reverse = {w: k for k, v in dic.items() for w in v}
print(dic_reverse)
{'value1': 'key1', 'value2': 'key1', 'value4': 'key2', 'value5': 'key2'}
然后,您可以通过检索密钥dic_reverse.get('value4', None)。

慕田峪7331174
TA贡献1828条经验 获得超13个赞
不确定是否要这样做,但您可以在这里-
[k for k, v in dic.iteritems() for i in v if i == "value1"]
让我知道这是否解决了问题。
添加回答
举报
0/150
提交
取消