字典被填充有連續的整數密鑰,這樣的:Python字典迭代順序意外排序。爲什麼?
d = dict()
for i in range(0, 10):
d[i] = 100-i
後來,字典項被重複這樣的:
for k, v in d.items():
print k, v
結果顯示項被按數字順序重複:
0 100
1 99
2 98
3 97
4 96
5 95
6 94
7 93
8 92
9 91
事實證明,這是我想要的行爲,但不是我所期望的。我期望隨機順序的字典迭代。這裏發生了什麼事情,我可以在公開發布的代碼中依賴這種行爲嗎?
如果需要插入順序,'OrderedDict'會有幫助https://docs.python.org/3/library/collections.html#collections.OrderedDict –
這不是一個優化,只是CPython哈希的自然副作用整數。不過,最好不要依賴它! – jonrsharpe
@jonrsharpe:在某種程度上有一個有意義的區別,我認爲CPython的散列本身就是對這個確切用例的優化。一個六個,另外六個。 – Kevin