【问题标题】: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 顺序,而不是基于键类型的任何特定顺序。
  • 是的,是一样的。很抱歉我之前没有发现这个问题。

标签: python dictionary


【解决方案1】:

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

来自Python 3.7 release notes

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

【讨论】:

  • 不知道最近有什么变化,你能链接一些说明这一点的文档/发行说明吗?
  • 是的,这就是我需要的答案。非常感谢!
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2020-09-11
相关资源
最近更新 更多