首页 >后端开发 >Python教程 >Python 3.6 字典是有序的吗?这对性能有何影响?

Python 3.6 字典是有序的吗?这对性能有何影响?

Patricia Arquette
Patricia Arquette原创
2024-12-21 17:19:101063浏览

Are Python 3.6  Dictionaries Ordered, and How Does This Impact Performance?

Python 3.6 字典是有序的吗?

在 Python 3.6 及更高版本中,字典维护其元素的插入顺序。这种行为称为“插入排序”。与提供高级顺序相关功能的 OrderedDict 不同,字典仅保留元素插入的顺序。

Python 3.6 如何在保留顺序的同时增强字典性能

Python 3.6字典实现采用双数组方法来解决内存效率问题,同时保持插入order。

  • dk_entries 数组: 按插入顺序存储字典条目。
  • dk_indices 数组: 包含指向的索引到 dk_entries 数组。

这个方法避免了对稀疏数组的需要,这就是以前实现中的情况。相反,它只存储必要的条目及其索引,从而导致更紧凑的内存使用。

视觉表示:

考虑以下字典:

d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'}

在新的实现下,它将存储为:

indices = [None, 1, None, None, None, 0, None, 2]
entries = [[-9092791511155847987, 'timmy', 'red'],
           [-8522787127447073495, 'barry', 'green'],
           [-6480567542315338377, 'guido', 'blue']]

比较与之前的实现相比,这种方法显着减少了内存浪费。

新字典实现的好处

主要是,新实现在保留插入顺序的同时提高了内存使用率。虽然新旧实现之间的速度差异并不显着,但某些操作(例如迭代和调整大小)可能会带来性能提升。

以上是Python 3.6 字典是有序的吗?这对性能有何影响?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn