字典与哈希表(HashMap)
https://www.jianshu.com/p/84a31aca21aa
希表又称散列表,是根据关键码值而直接进行访问的数据结构,即通过关键码将值映射到表中的某个位置来存储和访问,以加快查找的速度。哈希表是字典的实现原理,字典通过哈希表来存储数据,而读取的时候也是通过哈希表来获取对应的值。无论哈希表中有多少数据,增删操作的时间复杂度都为O(1),相当于无须查找,直接定位对其操作。
哈希表的存储方式是以数组为基础,每个元素是一个链表,链表上的元素的查找是根据特定的哈希算法决定的,并尽量避免哈希冲突。
https://blog.csdn.net/ChenVast/article/details/81451297
Python内部很地方都使用着dict这种结构,在对象属性__dict__就是一个字典,所以对其效率要求很高。
dict采用了哈希表,最低能在 O(1)时间内完成搜索。同样的java的HashMap也是采用了哈希表实现,不同是dict在发生哈希冲突的时候采用了开放寻址法,而HashMap采用了链接法。
其中有很重要的两个参数影响其性能: 初始容量和加载因子
dict:默认初始容量为8,加载因子为2/3
HashMap: 默认初始容量为16, 加载因子为0.75
两者相同的是扩容的长度必需是2的N次方
开放寻址法??,而HashMap采用了链接法??
芋道源码:再见面试官:为什么 HashMap 的加载因子是0.75?zhuanlan.zhihu.com