Python字典细节

时间:2013-02-02 17:44:10

标签: python dictionary hashtable language-features

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

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

我知道这个问题有点模糊,所以只是在正确方向上的一点是有帮助的。如果有人知道python字典上的任何好文档会很棒。

3 个答案:

答案 0 :(得分:5)

它位于Objects/dictobject.c文件中。还有dictnotes.txt file,以指导您理解来源。

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

网上有几篇文章,包括this blog post;你也可以拿起“美丽的代码”一书,以获得良好的代码曝光率。

答案 1 :(得分:2)

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

答案 2 :(得分: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