Python字典是哈希表的示例吗?

时间:2020-03-06 14:32:22  来源:igfitidea点击:

字典是Python中的一种基本数据结构,它允许记录"键"以查找任何类型的"值"。这是在内部实现为哈希表吗?如果没有,那是什么?

解决方案

是的,它是一个哈希映射或者哈希表。我们可以在此处阅读由蒂姆·彼得斯(Tim Peters)编写的有关python dict实施的说明。

这就是为什么我们不能将"不可散列"的内容用作字典键(例如列表)的原因:

>>> a = {}
>>> b = ['some', 'list']
>>> hash(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list objects are unhashable
>>> a[b] = 'some'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list objects are unhashable

我们可以阅读有关散列表的更多信息,或者查看它如何在python中实现以及为什么以这种方式实现。

是的。在内部,它被实现为基于Z / 2(源)上的原始多项式的开放式哈希。

扩展一下nosklo的解释:

a = {}
b = ['some', 'list']
a[b] = 'some' # this won't work
a[tuple(b)] = 'some' # this will, same as a['some', 'list']