2012-05-24 115 views
1

可能重複:
Python reverse/inverse a mapping反向元素字典

說我有以下幾點。

D = {'a':1,'b':2,'c':3} 

我將如何扭轉每一個元素,所以我得到

inverseD = {1:'a',2:'b',3'c'} 
+3

無關緊要,但我仍然不理解那些在某些話題上使用戶對合法混淆的人,即使他/她的堆棧壽命只有一個月。 – nye17

+1

同意。對於新來者問題的積極評價應該至少伴隨着解決問題的方法和/或關於如何改進問題的建議。 –

+0

對不起,重複。我問了一個錯誤的問題。 – user1352521

回答

7

使用字典理解(Python的2.7+3.0+):

D = {'a':1,'b':2,'c':3} 
inverse = {v: k for k, v in D.items()} 
print(inverse) 
# {1: 'a', 2: 'b', 3: 'c'} 
+0

呵呵,完全一樣的答案。我必須通過驗證碼檢查,這就是爲什麼我遲到了。我會刪除我的答案。 +1。 – ch3ka

3

對於Python 2.6和更早版本(無字典理解):

d = {'a':1,'b':2,'c':3} 
inverse_dict = dict((v,k) for k,v in d.items()) 

這是假設字典d的值是哈希的,例如,它不會在這本字典的工作:

>>> d={'l':[],'d':{},'t':()} 
>>> inverse_dict = dict((v,k) for k,v in d.items()) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unhashable type: 'list' 

你還會遇到問題,如果值的原始字典的不是唯一,例如

>>> d={'a': 1, 'c': 3, 'b': 2, 'd': 1} 
>>> dict((v,k) for k,v in d.items()) 
{1: 'd', 2: 'b', 3: 'c'} 
+0

正是我需要的。謝謝。在手冊中找不到它。 – user1352521

3

您可以使用馬塔的答案,如果你有Python2.7 +以其它方式使用mhawke的答案。

反轉這樣一個字典只是正常工作,如果源字典的所有值都是唯一的,可哈希

如果值是哈希的,但不是唯一的,你可以做一個字典具有列出的值,而不是