为什么字典的查询速度比列表快


因为字典采用的是哈希索引, 所以查询速度要比列表快, 那么问题来了? 什么数据类型可哈希,什么数据类型不可哈希呢?

这里有一个口诀: 可变(数据类型)不可哈希, 不可变(数据类型)可哈希

可变的数据类型: 列表、字典、集合

不可变数据类型:数值型、字符串、元组、布尔

那么七大基本数据类型什么是序列什么是散列呢?

序列:字符串、列表、字典、元组

散列:数值型、布尔、集合

回到问题的本身,为什么字典的查询速度比列表快?

先了解一下哈希算法(仅供参考)

哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。

哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,

随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数

据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。

字典在存储时将字典的键利用哈希算法申城哈希值, 并将所有键生成的哈希值组成一张哈希表, 在对字典进行

查询时, 会先对字典的键利用哈希算法生成哈希值, 然后再到哈希表中查询, 而不像列表一样遍历索引位置元

素进行查询, 所以比列表查询速度快.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM