Dict 从 Python 3_7 开始正式变为有序

查看原文

Python 社区的热话题:这个 Reddit 的帖子讨论了 Python 的这个变更。dict keys 变为有序,在先前的版本里面,文档都是告诫用户 dict 是无序的,即便有序也不要依赖;但从 Python 3.7 开始,Performing list(d) on a dictionary returns a list of all the keys used in the dictionary, in insertion order link, 这意味着,dict 在内部实现得维持插入时的顺序。

  • 这个评论 / link, 阐述了如何做到: 在 dict 内部有两个列表,一个按照插入先后存储 k-v 对,另一个存 k-indice 。
  • 变为有序是有蛮多需求的:pep-0468, pep-0487, pep-0520.
  • 事实上,目前最快的 dict 实现就是有序的,那为什么不干脆变成有序呢?
  • 统一设置成有序,能让所有 Python 解释器更加行为一致
  • OrderDict 肿么办?估计要被废弃了。。