在 Python3.5 (含) 以前, 字典是不能保证顺序的, 键值对 A 先插入字典, 键值对 B 后插入字典, 但是当你打印字典的 keys 列表时, 你会发现 B 可能在 A 的前面.
但是从 Python3.6 开始, 字典就变成有序的了. 你先插入键值对 A, 后插入键值对 B, 那么当你打印 keys 列表时, 你就会发现 B 在 A 的后面.
不仅如此, 从 Python3.6 开始, 下面的三种遍历操作, 效果要高于 Python3.5 之前:for key in 字典
for value in 字典.values()
for key, value in 字典.items()
从 Python3.6 开始, 字典占用内存空间的大小, 视字典里面键值对的个数, 只有原来的 30% ~ 95%.
Python3.6 到底对字典做了什么优化呢? 为了说明这个问题, 我们需要先来说一说, 在 Python3.5 (含) 之前, 字典的底层原理.
当我们初始化一个空字典的时候, CPython 的底层会初始化一个二维数组, 这个数组有 8 行, 3 列, 如下面的示意图所示:my_dict = {}
"""
此时的内存示意图
[[---, ---, ---],
[---, ---, ---],
[---, ---, ---],
[---, ---, ---],
[---, ---, ---],
[---, ---, ---],
[---, ---, ---],
[---, ---, ---]]
"""
现在, 我们往字典里面添加一个数据:my_dict['name'] = 'point'
"""
此时的