我有一个字典,其中的值是列表。我想在列表中查找特定值(字典的值字段)并返回键值:
dict={'a':['ab','cd','ef'], 'b':['gh', 'ij'], 'c':['kl', 'mn']}
所以'ef'我会'a',因为'mn'我会得到'c'......
我试过了
value_key=[a for a,b in dict if value in b]
有什么想法吗?
答案 0 :(得分:2)
假设您想多次以这种方式进行索引,您应该构建反向映射,从值(实际上是子值)到键:
{ vsub:k for k, v in d.iteritems() for vsub in v }
这需要你原来的dict(在这里称为d
,因为dict
是Python中的内置名称)," inverts"它,通过映射每个子值(列表中的元素)的调整。
一旦你有了这个新的词典,你可以简单地通过诸如' ab'之类的键来索引它。获得' a':
{'ab': 'a', 'ef': 'a', 'mn': 'c', 'kl': 'c', 'ij': 'b', 'cd': 'a', 'gh': 'b'}
答案 1 :(得分:1)
使用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
方法。