说说Python中字典和散列表,散列冲突的解决原理

匿名 (未验证) 提交于 2019-12-02 22:51:30

散列表

Pythondict散列表dict

Python

如果要把一个对象放入到散列表里,就先要计算这个元素键的散列值。这就要求键(key)必须是可散列的。

一个可散列的对象必须满足以下条件:

hash

eq

散列表的算法:

Python散列值散列冲突

KeyError

添加新元素跟上面的过程几乎一样,只不过在发现空表元的时候会放入这个新元素,不为空则为散列冲突,继续查找。

为什么字典是无序的

dictkey1key2

dictPython

如果在迭代一个字典的同时往里面添加新的键,会发生什么?不凑巧扩容了,不凑巧键的次序变了,然后就 orz 了。

总结

散列表是一个在时间和空间上做出权衡的经典例子。如果没有空间(内存)的限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为 O(1);如果没有时间的限制,那么可以直接用数组,这样只需要很少的内存。

文章来源: https://blog.csdn.net/sinat_38682860/article/details/91980984
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!