Python 字典中的反向元素

Python 字典中的反向元素,python,dictionary,tuples,Python,Dictionary,Tuples,可能重复: 假设我有以下几点 D = {'a':1,'b':2,'c':3} 如何反转每个元素以获得 inverseD = {1:'a',2:'b',3'c'} 使用dict理解(Python2.7+和3.0+): 使用dict理解(Python2.7+和3.0+): 对于Python 2.6及更早版本(无dict理解): 这假设dictd的值是可散列的,例如,它不适用于此字典: >>> d={'l':[],'d':{},'t':()} >>> inve

可能重复:

假设我有以下几点

D = {'a':1,'b':2,'c':3}
如何反转每个元素以获得

inverseD = {1:'a',2:'b',3'c'}
使用dict理解(Python
2.7+
3.0+
):

使用dict理解(Python
2.7+
3.0+
):


对于Python 2.6及更早版本(无dict理解):

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

对于Python 2.6及更早版本(无dict理解):

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

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

只有当源dict的所有值都是唯一且可散列的时,这样反转dict才能正常工作


如果值是可散列的,但不是唯一的,则可以使用值列表来生成dict

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

只有当源dict的所有值都是唯一且可散列的时,这样反转dict才能正常工作


如果值是可散列的,但不是唯一的,则可以使用值列表来生成dict,答案完全相同。我必须通过验证码检查,这就是我迟到的原因。我将删除我的答案+嘿,答案完全一样。我必须通过验证码检查,这就是我迟到的原因。我将删除我的答案+1.正是我需要的。谢谢在手册里找不到。正是我需要的。谢谢在手册中找不到。不相关,但我仍然不理解那些对用户在某个主题上的合法困惑投反对票的人,即使他/她的堆栈寿命只有一个月。同意。对新来者问题的否决票至少应附有对否决票的解释和/或关于如何改进问题的建议。抱歉重复。我问错了问题。不相关,但我仍然不理解那些对用户在某个主题上的合法困惑投反对票的人,即使他/她的堆栈寿命只有一个月。同意。对新来者问题的否决票至少应附有对否决票的解释和/或关于如何改进问题的建议。抱歉重复。我问错了问题。
>>> 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'}