如何在字典中交换键和值?

156 投票
19 回答
161227 浏览
提问于 2025-04-15 12:26

我接收到一个字典作为输入,想要返回一个新的字典,这个新字典的键是输入字典的值,而值则是对应的输入字典的键。输入字典的值是唯一的。

举个例子,假设我的输入是:

a = dict()
a['one']=1
a['two']=2

我希望我的输出是:

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

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

res = dict()
res[1] = 'one'
res[2] = 'two'

有没有什么简单优雅的Python方法可以做到这一点?

19 个回答

62

从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'}
66
new_dict = dict(zip(my_dict.values(), my_dict.keys()))

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

206

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())

撰写回答