Python 3.6 中的字典是有序的吗?
从 Python 3.6 开始,CPython 实现中的字典是插入有序的,这意味着它们保留顺序插入的项目数。但是,此行为被视为实现细节,不应依赖。
Python 3.7 中的保证插入顺序
在 Python 3.7 中,字典的插入顺序成为保证语言功能。这意味着所有符合标准的 Python 实现都必须提供插入排序字典。
插入排序的性能改进
Python 3.6 中的新字典实现通过维护两个来实现插入排序arrays:
此设计通过仅存储所需的条目并使用稀疏索引数组来减少内存开销。之前的实现分配了键和值条目的稀疏数组,导致出现空格。
数据结构可视化
例如字典 { '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 字典中的插入顺序是一项重大改进,它提高了内存效率,并使字典在 Python 实现中更加可靠。
以上是Python 字典在 3.6 中保证保持插入顺序吗?的详细内容。更多信息请关注PHP中文网其他相关文章!