为什么 Python 3.6 以后字典有序并且效率更高?

1 · Pil0tXia · Nov. 10, 2022, 11:48 a.m.
在 Python 3.5(含)以前,字典是不能保证顺序的,键值对 A 先插入字典,键值对 B 后插入字典,但是当你打印字典的 Keys 列表时,你会发现 B 可能在 A 的前面。但是从 Python 3.6 开始,字典是变成有顺序的了。你先插入键值对 A,后插入键值对 B,那么当你打印 Keys 列表的时候,你就会发现 B 在 A 的后面。不仅如此,从 Python 3.6 开始,下面的三种遍历操作,效率要高于 Python 3.5 之前:123for key in 字典for value in 字典.values()for key, value in 字典.items()从 Python 3.6 开始,字典占用内存空间的大小,视字典里面键值对的个数,只有原来的 30%~95%。Python 3.6 到底对字典做了什么优化呢?为了说明这个问题,我们需要先来说一说,在 Python 3.5(含)之前,字典的底层原理。当我们初始化一个空字典的时候,CPython 的底层会初始化一个二维数组,这个数组有 8 行,3 列,如下面的示意图所示:12345678910111213my_dict =...