6-5 set和dict的背后原理

dict的性能遠(yuǎn)遠(yuǎn)高于list

在list中隨著數(shù)據(jù)量的增大,查找時間也會增大

在dict中隨著數(shù)據(jù)量的增大,查找時間不會增大

原因:

因為dict使用哈希表實現(xiàn)的,也就是散列表
哈希表是一個非常松散的數(shù)組,因為他不是填滿的,要求留下空白的表元(就是一堆key和value組成的東西)

哈希表存儲原理:

dict中的key會調(diào)用內(nèi)置的hash()方法(如果是自定義的類就會調(diào)用自定義的hash;),把hash()得到的新key作為 索引或者說數(shù)組下標(biāo),找到位置把key和value的引用一起存入數(shù)組中

散列值和相對性

如果1==1.0 成立, 那么hash(1) == hash(1.0)也會成立

哈希表的查找:

因為本質(zhì)上是數(shù)組,所以通過偏移量就能查找到對應(yīng)的目標(biāo)

dict的優(yōu)缺點:

1 key必須是可以哈希的

意味著key是不可變的

2 字典在內(nèi)存上花銷巨大

因為散列表有大部分是空白的,所以導(dǎo)致它在空間上效率低下;

3 鍵的查詢很快

(本質(zhì)就是以空間換時間),如dict的特性:在dict中隨著數(shù)據(jù)量的增大,查找時間不會增大

4:鍵的次序取決于數(shù)據(jù)添加順序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容