内部字典顺序可以改变吗?

P.V*_*.V. 4 python dictionary hashmap

exampleDict = {'a':1, 'b':2, 'c':3, 'd':4}
Run Code Online (Sandbox Code Playgroud)

上面的字典最初按以下顺序迭代:

b=2
d=4
a=1
c=3
Run Code Online (Sandbox Code Playgroud)

然后,我在我的代码中移动了大量文件,现在它按以下顺序迭代:

d=4
a=1
c=3
b=2
Run Code Online (Sandbox Code Playgroud)

我知道订单内部存储为hashmap,但是什么会导致内部订单改变?

编辑:我不需要保留顺序,所以我会坚持使用dict.我只是想知道为什么会这样.我认为订单不能得到保证,但一旦它有任意的内部订单,它就会坚持下去,以备将来的迭代.

CoM*_*tel 5

Dict没有固定的订单,来自文档

CPython实现细节:键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史.

如果你真的需要保持秩序,有一个对象叫OrderedDict:

from collections import OrderedDict
exampleDict = OrderedDict({'a':1, 'b':2, 'c':3, 'd':4})
Run Code Online (Sandbox Code Playgroud)

又见OrderedDict文档在这里