关于python:字典中的反转元素

Reverse elements in dictionary

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python reverse / inverse a mapping

假设我有以下内容。

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

我如何反转每一个元素以获得

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


使用一个听写理解(Python)

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


如果你有Python2.7+其他的Mhawke的答案,你可以使用Mata的答案。

如果源代码的所有值都是独一无二的,就可以推翻这样的命令。

如果价值是可以的,但不是唯一的,你可以用列表来命令价值。


对于Python2.6和猎犬(没有听懂):

ZZU1

This assumes the values of dict edoc1〔2〕are hashable,for example,it won't work on this dictionary:

1
2
3
4
5
>>> 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'

如果原始字典的价值不是独一无二的,你也会成为问题。

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