Python中的一个基本数据结构是字典,它允许用户记录“键”以查找任何类型的“值”。这在内部实现为哈希表吗?如果不是,那是什么?
发布于 2008-09-22 13:23:00
是的,它是一个哈希映射或哈希表。您可以阅读由here 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
您可以使用read more about hash tables或check how it has been implemented in python和why it is implemented that way。
发布于 2008-09-22 13:25:28
是。在内部,它被实现为基于Z/2上的本原多项式的开放散列(source)。
发布于 2008-09-22 15:09:44
为了扩展nosklo的解释:
a = {}
b = ['some', 'list']
a[b] = 'some' # this won't work
a[tuple(b)] = 'some' # this will, same as a['some', 'list']
https://stackoverflow.com/questions/114830
复制相似问题