Python 3.6:字典保留插入顺序
从 Python 3.6 开始,CPython 实现中的字典表现出插入顺序,这与以前的版本有很大不同。此功能现已成为 Python 3.7 中保证的语言功能。
改进的内存使用和性能
与之前相比,新的字典实现显着减少了 20-25% 的内存使用Python 3.5。此改进源于实现中使用单独的数组:
之前需要分配PyDictKeyEntry类型的稀疏数组,出于性能考虑导致空间浪费。新方法仅分配必要的条目,并采用 intX_t 类型的稀疏数组,这会消耗更少的内存。
使用的数据结构
最初,字典存储为 [ keyhash, key, value] 位于稀疏数组中,其中空条目用“--”表示。新方法将数据组织为:
条目: [[-9092791511155847987, 'timmy', 'red'],
[-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']]
这个修改后的结构显着减少了内存开销。
插入的好处排序
虽然新的字典实现主要关注内存优化,但插入排序功能具有方便的应用:
需要注意的是,在不同的 Python 实现或未来的语言版本中,不能保证插入顺序。然而,在 Python 3.7 及更高版本中,这是一个值得您信赖的有保证的功能。
以上是Python 3.6 字典实现如何提高内存使用并保留插入顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!