在python中反转字典并不起作用

时间:2017-04-14 14:08:01

标签: python dictionary

这是用于在字典中切换键和值之间的代码:

for k in d:
    d[d[k]] = k
    d.pop(k)

此代码的问题是它应该进行更多操作,并且对于某些输入会返回错误的结果

这个问题的原因是什么?

2 个答案:

答案 0 :(得分:3)

您正在迭代它时向字典添加值。一般来说,这是一个坏主意。最好使用字典理解来构造一个新的字典。

new_d = {v:k for k,v in d.items()}

答案 1 :(得分:3)

问题在于您在迭代字典时更改字典,以及谁知道导致的问题。

请注意,一般来说,您无法反转词典:键必须是唯一且可以清除的,但值不是必须的。我假设你的词典具有独特的可用值,因此它至少是可能的。

然后我会使用字典理解来创建一个新字典,并指定:

d = {value: key for (key, value) in d.items()}