2012-02-07 45 views
0

可能重复:
Most efficient method to get key for a value in a dict
Python: Modify a dict to make the key a value, and a value the key获取键的值

在Python中,假设我们有一个字典:

mydict = {'myKey': 'myValue'} 

来获取值对于myKey我们做

myDict['myKey'] 

假设我们需要做相反的事情。 获取价值我的价值的关键最简单的方法是什么?

注意:在这种情况下,我的字典是静态的。条目从未改变。

+1

是按键之间的映射和值双射(一个对一个)?或者可以将一个值映射回多个键? – 2012-02-07 21:20:41

+0

这是双面的。 – dublintech 2012-02-07 21:21:36

+0

我想我会看到@AlexReynolds正在获取什么,难道你不能简单地在另一个字典中创建反向映射。如果对他的问题的答案是否定的,任何其他解决方案遍历字典并查找您的值可能会导致多个键。在这种情况下,您仍然可以构建第二个字典,但将n元组存储为值。 – shaunhusain 2012-02-07 21:23:12

回答

0

您可以创建一个“颠倒”的字典,因为初始字典是静态的:

>>> revdict = dict([(mydict[key],key) for key in mydict]) 
>>> revdict['myValue'] 
'myKey' 
0

你可以做一个反向的字典

revDict = dict((v,k) for k,v in myDict.items()) 

或这如果所有值都没有明显的

revDict = defaultdict(list) 
for k,v in myDict: 
    revDict[v].append(k) 
0

您可以反你的词典到值到列表中,密钥的安排使用这样的事情:

newdict = {} 
for k,v in mydict.iteritems(): 
    lst = newdict.get(v, []) 
    newdict[v].append(k) 

然后,您可以索引到该反向字典找到您的密钥:

mykey = newdict.get(myvalue) 
1

这应该工作:

keyPoint = [key for key, value in mydict.iteritems() if value == "myValue"][0] 

这将返回键的值。