如何与字典中的值交换键?

我收到一个字典作为输入,并想返回一个字典,其键将是输入的值,而其值将是对应的输入键。价值观是独一无二的。


例如,说我的输入是:


a = dict()

a['one']=1

a['two']=2

我希望我的输出是:


{1: 'one', 2: 'two'}

为了澄清,我希望我的结果等于以下内容:


res = dict()

res[1] = 'one'

res[2] = 'two'

有什么精巧的Pythonic方式可以做到这一点?


天涯尽头无女友
浏览 779回答 3
3回答

白猪掌柜的

Python 2:res = dict((v,k) for k,v in a.iteritems())Python 3(感谢@erik):res = dict((v,k) for k,v in a.items())

函数式编程

从Python 2.7起,包括3.0及更高版本,有一个更短,更易读的版本:>>> my_dict = {'x':1, 'y':2, 'z':3}>>> {v: k for k, v in my_dict.items()}{1: 'x', 2: 'y', 3: 'z'}

守着一只汪

您可以尝试:d={'one':1,'two':2}d2=dict((value,key) for key,value in d.iteritems())d2  {'two': 2, 'one': 1}注意,如果出现以下情况,您将无法“撤消”字典多个密钥共享相同的值。例如{'one':1,'two':1}。新字典只能有一个带有key的项目1。其中一个或多个值是不可散列的。例如{'one':[1]}。[1]是有效值,但不是有效键。有关此主题的讨论,请参见python邮件列表上的该线程。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python