2012-02-07 47 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] 

這將返回鍵的值。