python 字典遍历 效率_为什么 Python3.6 以后字典有序并且效率更高?

在 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'

"""

此时的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值