因为字典采用的是哈希索引, 所以查询速度要比列表快, 那么问题来了? 什么数据类型可哈希,什么数据类型不可哈希呢?
这里有一个口诀: 可变(数据类型)不可哈希, 不可变(数据类型)可哈希
可变的数据类型: 列表、字典、集合
不可变数据类型:数值型、字符串、元组、布尔
那么七大基本数据类型什么是序列什么是散列呢?
序列:字符串、列表、字典、元组
散列:数值型、布尔、集合
回到问题的本身,为什么字典的查询速度比列表快?
先了解一下哈希算法(仅供参考)
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。
哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,
随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数
据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。
字典在存储时将字典的键利用哈希算法申城哈希值, 并将所有键生成的哈希值组成一张哈希表, 在对字典进行
查询时, 会先对字典的键利用哈希算法生成哈希值, 然后再到哈希表中查询, 而不像列表一样遍历索引位置元
素进行查询, 所以比列表查询速度快.