如果一个键存在更多值,如何在python词典中为特定值打印键?

 dic = {'key1': ["value1",  "value2"],

        'key2': ["value4", "value5"] }


 "value4" in [x for v in dic.values() for x in v]

 >> True

我想打印value4的键,而不是True


SMILET
浏览 199回答 3
3回答

翻阅古今

python字典经过优化,可以通过键而不是反向键来访问值,因此,这里没有比遍历dict中的所有条目更好的选择了:for key, values in dic.items():    if 'value4' in values:        print(key)        break

江户川乱折腾

对于一个孤立的电话,您应该迭代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

不确定是否要这样做,但您可以在这里-[k for k, v in dic.iteritems() for i in v if i == "value1"]让我知道这是否解决了问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python