为啥我在 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? dict
s 是无序的; CPython 3.6 将它们作为实现细节订购,Python 3.7 将其作为语言规范的一部分正式发布。请注意,顺序是 insertion 顺序,而不是基于键类型的任何特定顺序。
是的,是一样的。很抱歉我之前没有发现这个问题。
【参考方案1】:
dict
保留来自 python 3.6 的插入顺序(由于内部实现),您可以依赖来自 python 3.7 的顺序
来自Python 3.7 release notes
dict 对象的插入顺序保存特性现在是 Python 语言规范的官方部分。
【讨论】:
不知道最近有什么变化,你能链接一些说明这一点的文档/发行说明吗? 是的,这就是我需要的答案。非常感谢!以上是关于为啥我在 python 中的字典总是有序的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python 有序字典(OrderedDict)与 普通字典(dict)