Python 3.6 字典是有序的吗?
在 Python 3.6 及更高版本中,字典维护其元素的插入顺序。这种行为称为“插入排序”。与提供高级顺序相关功能的 OrderedDict 不同,字典仅保留元素插入的顺序。
Python 3.6 如何在保留顺序的同时增强字典性能
Python 3.6字典实现采用双数组方法来解决内存效率问题,同时保持插入order。
这个方法避免了对稀疏数组的需要,这就是以前实现中的情况。相反,它只存储必要的条目及其索引,从而导致更紧凑的内存使用。
视觉表示:
考虑以下字典:
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中文网其他相关文章!