为啥我在 python 中的字典总是有序的? [复制]

Posted

技术标签:

【中文标题】为啥我在 python 中的字典总是有序的? [复制]【英文标题】:Why is my dictionary in python always ordered? [duplicate]为什么我在 python 中的字典总是有序的? [复制] 【发布时间】:2019-01-21 08:56:40 【问题描述】:

我知道 Python 中的字典是无序的。但我很困惑为什么我的 dict 在我输出它们时总是被排序。就像下面的代码一样,无论我如何更改键或值,它总是按顺序打印。谢谢!

num1 = 30
num2 = 192
c1 = 'good'
c2 = 'hello'
a = 'a':8, 'k':c2, 'c':3, 'b':5
a['g'] = 56
a['jj'] = num2
a['89'] = 'asdfg'
a['u'] =42
a['d'] = c1
a['11'] = 40
a['0'] = num1
print(a)
for key in a:
    print(key, a[key])

output

【问题讨论】:

在 Python 3.7 和更新版本中,dict 对象将始终保持插入顺序——现在这是规范的强制要求。 (实际上从 CPython 3.6 开始就是这样,3.7 只是让它成为该语言的官方行为。) 您使用的是什么版本的 Python? dicts 无序的; CPython 3.6 将它们作为实现细节订购,Python 3.7 将其作为语言规范的一部分正式发布。请注意,顺序是 insertion 顺序,而不是基于键类型的任何特定顺序。 是的,是一样的。很抱歉我之前没有发现这个问题。 【参考方案1】:

dict 保留来自 python 3.6 的插入顺序(由于内部实现),您可以依赖来自 python 3.7 的顺序

来自Python 3.7 release notes

dict 对象的插入顺序保存特性现在是 Python 语言规范的官方部分。

【讨论】:

不知道最近有什么变化,你能链接一些说明这一点的文档/发行说明吗? 是的,这就是我需要的答案。非常感谢!

以上是关于为啥我在 python 中的字典总是有序的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python中的字典到底是有序的吗

Python基础——字典和有序字典

Python 有序字典(OrderedDict)与 普通字典(dict)

python实现字典遍历稳定有序使用collection包OrderedDict

如何实现Python3字典的有序输出

python之collections之有序字典(OrderedDict)