6-5 set和dict的背后原理

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

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

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

原因:

因?yàn)閐ict使用哈希表實(shí)現(xiàn)的,也就是散列表
哈希表是一個(gè)非常松散的數(shù)組,因?yàn)樗皇翘顫M的,要求留下空白的表元(就是一堆key和value組成的東西)

哈希表存儲(chǔ)原理:

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

散列值和相對(duì)性

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

哈希表的查找:

因?yàn)楸举|(zhì)上是數(shù)組,所以通過(guò)偏移量就能查找到對(duì)應(yīng)的目標(biāo)

dict的優(yōu)缺點(diǎn):

1 key必須是可以哈希的

意味著key是不可變的

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

因?yàn)樯⒘斜碛写蟛糠质强瞻椎?,所以?dǎo)致它在空間上效率低下;

3 鍵的查詢(xún)很快

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

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

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

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