9

我需要这个案例的帮助:

m={}
m[1]=1
m[333]=333
m[2]=2

# Result:
{1: 1, 2: 2, 333: 333}

所以即使我最后没有输入'333',当我打印出来时,我也会在字典的末尾列出这个'333'。为什么这个“字典”会自动排序?以及如何禁用它?我可以创建一个功能来重新排序以修复订单。但这不是我想要的,我只是想打印并获取输出顺序,就像我输入数据时的顺序一样。有什么好的解释吗?有什么解决办法吗?

4

3 回答 3

23

它不是排序。dict根本没有排序,所以你不能以任何方式影响键的顺序。有collections.OrderedDict2.7 和 3.1+,还有2.4-2.6 的独立模块

于 2012-04-29T09:32:42.430 回答
2

存储在字典中的项目没有任何固有顺序。它们的打印顺序完全取决于字典中每个键和其他项的哈希值。

于 2012-04-29T09:33:22.593 回答
0

自 3.6 以来发布此问题很长时间后,但仅针对那些登陆此页面的人?字典保留添加项目的顺序。

于 2020-09-02T00:28:42.670 回答