我想知道python字典的源代码在哪里。我知道源代码可能很难阅读,所以我只是在粗略描述了实现和使用的哈希例程之后。
是否有人知道使用哪种算法以及它们如何处理冲突,如果使用链接或重建表。
我知道这个问题有点含糊,所以请指出正确的方向会有所帮助。如果有人知道关于 python 字典的任何好的文档,那就太好了。
我想知道python字典的源代码在哪里。我知道源代码可能很难阅读,所以我只是在粗略描述了实现和使用的哈希例程之后。
是否有人知道使用哪种算法以及它们如何处理冲突,如果使用链接或重建表。
我知道这个问题有点含糊,所以请指出正确的方向会有所帮助。如果有人知道关于 python 字典的任何好的文档,那就太好了。
它位于Objects/dictobject.c
文件中。那里也有一个dictnotes.txt
文件,可以指导您了解来源。
Python 字典使用带有开放寻址的哈希表将键映射到槽。通过“扰动”密钥来解决冲突;一种从大步开始的算法,然后使用越来越小的步长,直到它扫描表以查找下一个空槽。
网上有几篇文章,包括这篇博文;您还可以阅读 Beautiful Code 这本书,以获得出色的代码曝光率。
还.. 。这是一个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
源代码树有关于字典如何工作的很好的文档:http: //hg.python.org/cpython/file/ab4b8da79a5f/Objects/dictnotes.txt