6-5 set和dict的背后原理

dict的性能远远高于list

在list中随着数据量的增大,查找时间也会增大

在dict中随着数据量的增大,查找时间不会增大

原因:

因为dict使用哈希表实现的,也就是散列表
哈希表是一个非常松散的数组,因为他不是填满的,要求留下空白的表元(就是一堆key和value组成的东西)

哈希表存储原理:

dict中的key会调用内置的hash()方法(如果是自定义的类就会调用自定义的hash;),把hash()得到的新key作为 索引或者说数组下标,找到位置把key和value的引用一起存入数组中

散列值和相对性

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

哈希表的查找:

因为本质上是数组,所以通过偏移量就能查找到对应的目标

dict的优缺点:

1 key必须是可以哈希的

意味着key是不可变的

2 字典在内存上花销巨大

因为散列表有大部分是空白的,所以导致它在空间上效率低下;

3 键的查询很快

(本质就是以空间换时间),如dict的特性:在dict中随着数据量的增大,查找时间不会增大

4:键的次序取决于数据添加顺序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容