【发布时间】:2019-07-17 20:28:58
【问题描述】:
python 中的字典是从 Python 3.6 开始排序的
来自 - https://stackoverflow.com/a/39980744/4647107
字典在 Python 3.6+ 中是有序的吗?
它们是插入顺序的。从 Python 3.6 开始,对于 CPython Python的实现,字典记住项目的顺序 插入。这被认为是 Python 3.6 中的一个实现细节; 如果你想要插入排序,你需要使用 OrderedDict 在 Python 的其他实现中得到保证。
从 Python 3.7 开始,这不再是实现细节,并且 反而成为一种语言特征。来自 GvR 的一条 python-dev 消息:
做到这一点。 “字典保持插入顺序”是裁决。谢谢!
这仅仅意味着您可以依赖它。的其他实现 如果他们愿意,Python 还必须提供一个插入有序字典 是 Python 3.7 的一致实现。
现在有没有办法在python中实现无序字典?
【问题讨论】:
-
有没有办法实现无序字典当然——自己写。
-
有什么特别的原因吗?你可以通过在键上使用
random.shuffle来模仿无序行为,如果你真的想要访问它们。 -
@jasonharper 我不希望 dict 记住插入顺序。我不在乎字典返回的许多可能的顺序之一是否是插入键的顺序。
-
你为什么想要那个?
-
我不明白这一点。字典的一般用例是 O(1) 查找。排序只会在迭代中产生差异,而且通常便于保持一致。你到底想做什么?
标签: python dictionary python-3.7