根据值字段python字典查找键值

时间:2014-04-16 13:55:18

标签: python dictionary

我有一个字典,其中的值是列表。我想在列表中查找特定值(字典的值字段)并返回键值:

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]

有什么想法吗?

2 个答案:

答案 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版本如何,它都能正常工作,因为我们不必担心itemsiteritems方法。