说我有以下内容。
D = {'a':1,'b':2,'c':3}
我如何反转每个元素以便
inverseD = {1:'a',2:'b',3'c'}
答案 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只能正常工作
如果这些值是可清除的,但不是唯一的,那么您可以创建一个包含值列表的字典