有谁知道python内置字典类型是如何实现的?我的理解是,这是某种哈希表,但我无法找到任何确定的答案。
这是我能够汇总的有关Python字典的所有内容(可能比任何人都想知道的要多;但是答案很全面)。
dict
<hash,key,value>
0, 1, ..., i, ...
# Logical model of Python Hash table -+-----------------+ 0| <hash|key|value>| -+-----------------+ 1| ... | -+-----------------+ .| ... | -+-----------------+ i| ... | -+-----------------+ .| ... | -+-----------------+ n| ... | -+-----------------+
i = hash(key) & mask(where mask = PyDictMINSIZE - 1
<hash|key|value>
(dictobject.c :337,344-345)
注意:我对Python Dict的实现进行了研究,以回答我自己的问题,即字典中的多个条目如何具有相同的哈希值。我在此处发布了对此回复的略作修改的版本,因为所有的研究也都与此问题相关。