字典中的反向元素

时间:2012-05-24 01:03:52

标签: python dictionary tuples

  

可能重复:
  Python reverse / inverse a mapping

说我有以下内容。

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

我如何反转每个元素以便

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

3 个答案:

答案 0 :(得分:7)

使用dict理解(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'}

答案 1 :(得分:3)

对于Python 2.6及更早版本(没有字典理解):

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

这假设dict 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'}

答案 2 :(得分:3)

如果你有Python2.7 +你可以使用mata的答案,否则使用mhawke的答案。

如果源dict的所有值都是唯一且可以删除的话,反转这样的dict只能正常工作

如果这些值是可清除的,但不是唯一的,那么您可以创建一个包含值列表的字典

相关问题