我有一个字典,其中的值是列表。我想看看在列表中的特定值(字典的值字段),并返回键值:那么“EF”我会得到“A”,对“百万”我会得到根据值字段python字典找到键值
dict={'a':['ab','cd','ef'], 'b':['gh', 'ij'], 'c':['kl', 'mn']}
'C' ......
我已经tryied
value_key=[a for a,b in dict if value in b]
任何想法?
我有一个字典,其中的值是列表。我想看看在列表中的特定值(字典的值字段),并返回键值:那么“EF”我会得到“A”,对“百万”我会得到根据值字段python字典找到键值
dict={'a':['ab','cd','ef'], 'b':['gh', 'ij'], 'c':['kl', 'mn']}
'C' ......
我已经tryied
value_key=[a for a,b in dict if value in b]
任何想法?
假设你想要做索引这样不止一次,你应该建立反向映射,从值(副值真的),以键:
{ vsub:k for k, v in d.iteritems() for vsub in v }
这需要你原来的字典(称为d
这里因为dict
是Python中的一个内置名称),并且通过映射每个子值(列表中的元素)进行调整来“倒置”它。
一旦你有了这个新的字典,你可以简单地索引,它通过像“AB”键获得“A”:
{'ab': 'a', 'ef': 'a', 'mn': 'c', 'kl': 'c', 'ij': 'b', 'cd': 'a', 'gh': 'b'}
(请注意,这要求子值是唯一的,如果它们不是这样,那么您在其他答案中的效率会更差)。 – geoffspear
用for key in dict_object
对字典进行遍历,然后使用in
运算符来检查被搜索的值是否在对应于该键的字典值中。如果存在,则保留输出的密钥。
my_dict,val={"a": ["ab", "cd", "ef"], "b": ["gh", "ij"], "c": ["kl", "mn"]}, "ef"
print [key for key in my_dict if val in my_dict[key]]
# ['a']
这种方法的优点是,它会工作,不论当前流行的Python版本,因为我们不担心items
和iteritems
方法。
字典只是为了走一条路(从关键值) 。如果你发现自己需要走相反的路,他们不是正确的结构使用 – wnnmaw
你的字典无效。 – thefourtheye
此外,你不能简单地“倒转”你的字典,因为列表不能是键 – wnnmaw