自由式学习
993人加入学习
(0人评价)
Python基础知识-pycharm版
价格 免费
承诺服务
该课程属于 1443-李同学-算法方向-计算机视觉-就业:是 请加入后再学习

字典是散列表  稀疏数组总有空白元素

数组每个单元就是一个bucket:2个部分 键对象引用和值对象引用

[展开全文]

字典核心底层原理(重要)

列表通过索引值寻找,字典通过键寻找。

字典对象的核心是散列表。散列表是一个稀疏数组,数组的每个单元叫做bucket,每个bucket有两部分:一个是键对象的引用,一个是值对象的引用。

(1)将一个键值对放进字典的底层过程

 

 

[展开全文]

字典核心底层原理(重要)

字典对象的核心是散列表。散列表是一个稀疏数组(总有空白元素的数组)。数组的每个单元叫做bucket。每个bucket有两部分:一个是键对象的引用,一个是值对象的引用。通过偏移量来读取指定bucket。

将一个键值对放进字典的底层过程

第一步计算key的散列值。Python中可以通过hash()来计算。

拿出计算出的散列值的最后面3位数‘101’作为偏移量,十进制是数字5。我们查看偏移量5对应的bucket是否为空。则把键值对放进去。如果不为空,则依次取后面3位作为偏移量,直到找到为空的bucket将键值对放进去。

[展开全文]

字典核心底层原理(重要)


字典对象的核心是散列表。稀疏数组(总是有空白元素的数组),数组的每个单元叫做bucket。)每个bucket 有两部分:一个是键对象的引用,一个是值对象的引用。
由于,所有bucket 结构和大小一致,我们可以通过偏移量来读取指定bucket


将一个键值对放进字典的底层过程

假设字典a 对象创建完后,数组长度为8:


1.首先计算键”name”的散列值。Python 中可以通过hash()来计算。
>>> bin(hash("name"))
'-0b1010111101001110110101100100101'

2.数组长度为8(三位)

3.拿散列值的最右边3 位数字作为偏移量,即
“101”,十进制是数字5。

4.我们查看偏移量5,对应的bucket 是否为空。如果为空,则将键值对放进去。如果不为空,则依次取右边3 位作为偏移量,即“100”直到找到为空的bucket 将键值对放进去。

5.数组放满不够就扩容

[展开全文]