我想知道python字典的源代码在哪里。我知道源代码可能很难阅读,因此我只是在粗略地描述实现和所使用的哈希例程之后。
是否有人知道使用了哪种算法以及如何处理冲突(如果使用了链接或正在重建表)。
我知道这个问题有点含糊,因此,朝正确的方向提出一点将对您有所帮助。如果有人知道关于python字典的任何好的文档,那将是很棒的。
最佳答案
它位于Objects/dictobject.c
文件中。那里也有一个dictnotes.txt
file,可以指导您理解源代码。
Python字典使用带有开放地址的哈希表将键映射到插槽。通过“扰动”密钥来解决冲突。一种算法,该算法将从大步长开始,然后使用越来越小的步长,直到它扫描表中的下一个空位。
网络上有几篇文章,包括this blog post;您还可以阅读《美丽代码》一书,以很好地了解代码。