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ù)添加順序