为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2019-11-25 15:48:53
我收到一个字典作为输入,并想返回一个字典,其键将是输入的值,而其值将是对应的输入键。价值观是独一无二的。例如,说我的输入是: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())


查看完整回答
反对 回复 2019-11-25
?
函数式编程

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'}


查看完整回答
反对 回复 2019-11-25
?
守着一只汪

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邮件列表上的该线程。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 778 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信