python的dict.items()总是返回相同的顺序吗?

Saq*_*Ali 2 python dictionary python-2.x python-internals iteritems

是否保证python 2.X的内置方法dict.items()dict.iteritems()始终以相同的顺序返回项目?或者这些方法是非确定性的吗?

Tim*_*ers 6

在一个程序的单个运行中,并且提供了dict d之间不会发生变异的话

d.items()
d.iteritems()
d.keys()
d.iterkeys()
d.values()
d.itervalues()
Run Code Online (Sandbox Code Playgroud)

每个都是一致的,每次都返回相同的序列.

但是如果你修改了dict,它可能会缩小或增长并在内部重新排列,这可能会改变顺序.然后在下一次突变之前保持不变.

编辑:一个例外,这是非常慎重的.如果仅替换与现有密钥关联的值,则订单不会更改.所以,如果k in dTrue,d[k] = v是无害的.但是,如果您添加新密钥或删除密钥,则所有投注均已关闭.