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:键的次序取决于数据添加顺序
网友评论