【发布时间】:2019-09-30 10:22:23
【问题描述】:
我试图了解python 3.6.7 和python 3.5.2 中python 字典之间的区别。它们存储键值对顺序的方式似乎不同。
例如,假设有一个名为 di 的字典:
di = {'a':1,'A':1,'b':2, 'B':2, 'c':3, 'C':3}
在Python 3.5.2,当我打印di时,输出是:
{'C': 3, 'a': 1, 'A': 1, 'B': 2, 'c': 3, 'b': 2}
但是,在Python 3.6.7 中,它是:
{'a': 1, 'A': 1, 'b': 2, 'B': 2, 'c': 3, 'C': 3}
两个版本之间有什么变化?
我怎样才能让我的代码订购python 3.6.7 的结果类似于3.5.2 的结果。
附:我知道 Python 字典中实际上没有 no order。这里使用order这个词是为了让读者容易理解我的问题。
谢谢。
【问题讨论】:
-
从 Python 3.6+ 开始,python 字典按插入顺序存储键值对。
-
您认识到字典中没有顺序 - 顺序取决于实现,并且可能会在未来版本中更改。因此,根据这样的顺序,一个错误必然会在某个时间点或另一个点破坏您的代码
-
@ArkistarvhKltzuonstev dict() 在 py3.6 中排序的事实是一个实现细节。如果需要有序行为,则应使用 OrderedDict。实际上,编辑 3.7 规范了 dict() 的插入顺序性质。不过,如果您想要订单,请使用 OrderedDict。
-
通常大多数人不需要依赖字典键顺序,除非有特殊要求。如果您需要的是导出字典以生成 JSON 文件,那么 json.dump 模块实际上有一个关键顺序参数。
标签: python dictionary unordered