2017-04-14 51 views
1

這是字典的鍵和值之間切換的代碼:扭轉Python字典不起作用

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

與此代碼,它使更多的操作,它應該使該問題,併爲一些輸入返回錯誤結果

這個問題的原因是什麼?

+0

[修改Python字典在遍歷吧]的可能的複製(http://stackoverflow.com/questions/6777485 /改性-A-蟒-字典·維持同時迭代-過它) –

回答

3

問題是你在迭代它的時候改變字典,誰知道會導致什麼問題。

請注意,一般來說,您不能反轉字典:鍵必須是唯一且可哈希的,但值不必是。我假設你的字典有獨特的可排序值,所以至少可以。

然後我會用字典解析來創建一個新的字典,並分配:

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

您正在迭代字典時將值添加到字典中。通常這是一個壞主意。使用詞典理解來構建新詞典更好。

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