我收到一个字典作为输入,并想返回一个字典,其键将是输入的值,而其值将是对应的输入键。价值观是独一无二的。例如,说我的输入是:a = dict()a['one']=1a['two']=2我希望我的输出是:{1: 'one', 2: 'two'}为了澄清,我希望我的结果等于以下内容:res = dict()res[1] = 'one'res[2] = 'two'有什么精巧的Pythonic方式可以做到这一点?
3 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
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())
函数式编程
TA贡献1807条经验 获得超9个赞
从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'}
守着一只汪
TA贡献1872条经验 获得超3个赞
您可以尝试:
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邮件列表上的该线程。
添加回答
举报
0/150
提交
取消