因為字典采用的是哈希索引, 所以查詢速度要比列表快, 那么問題來了? 什么數據類型可哈希,什么數據類型不可哈希呢?
這里有一個口訣: 可變(數據類型)不可哈希, 不可變(數據類型)可哈希
可變的數據類型: 列表、字典、集合
不可變數據類型:數值型、字符串、元組、布爾
那么七大基本數據類型什么是序列什么是散列呢?
序列:字符串、列表、字典、元組
散列:數值型、布爾、集合
回到問題的本身,為什么字典的查詢速度比列表快?
先了解一下哈希算法(僅供參考)
哈希算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。
哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,
隨后的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數
據的哈希值可以檢驗數據的完整性。一般用於快速查找和加密算法。
字典在存儲時將字典的鍵利用哈希算法申城哈希值, 並將所有鍵生成的哈希值組成一張哈希表, 在對字典進行
查詢時, 會先對字典的鍵利用哈希算法生成哈希值, 然后再到哈希表中查詢, 而不像列表一樣遍歷索引位置元
素進行查詢, 所以比列表查詢速度快.