1

我想知道python字典的源代码在哪里。我知道源代码可能很难阅读,所以我只是在粗略描述了实现和使用的哈希例程之后。

是否有人知道使用哪种算法以及它们如何处理冲突,如果使用链接或重建表。

我知道这个问题有点含糊,所以请指出正确的方向会有所帮助。如果有人知道关于 python 字典的任何好的文档,那就太好了。

4

3 回答 3

5

它位于Objects/dictobject.c文件中。那里也有一个dictnotes.txt文件,可以指导您了解来源。

Python 字典使用带有开放寻址的哈希表将键映射到槽。通过“扰动”密钥来解决冲突;一种从大步开始的算法,然后使用越来越小的步长,直到它扫描表以查找下一个空槽。

网上有几篇文章,包括这篇博文;您还可以阅读 Beautiful Code 这本书,以获得出色的代码曝光率。

于 2013-02-02T17:45:18.440 回答
2

还.. 。这是一个dict更有效的活动状态配方(from 3 to 24 times more space efficient than regular dictionaries)!.否则前两个答案很棒!
http://code.activestate.com/recipes/578375-proof-of-concept-for-a-more-space-efficient-faster/?in=user-178123

于 2013-02-02T17:52:02.687 回答
2

源代码树有关于字典如何工作的很好的文档:http: //hg.python.org/cpython/file/ab4b8da79a5f/Objects/dictnotes.txt

于 2013-02-02T17:46:46.107 回答