如何实现Python字典(内置哈希表)?

时间:2013-11-05 17:52:16

标签: python dictionary hashmap hashtable

我想知道如何实现python dict(字典/哈希表)。特别是,如果我写的东西像

my_dict = {"key": {"key: {"key": "value"}}}

python解释器可能做什么?我想知道它的内部工作。

它是否将每个字典视为一个对象(主要是是)?如果是这样,对于不同字典中的相同键,散列是否相同?例如,

dict1 = {"key": "value", "k": "v"}
dict2 = {"key": [1, 2.], "k": "value"}

这两个不同的词组中的键的查找有多么不同?另外,它如何决定铲斗的大小?或者类似于列表大小的处理? 希望你能得到我的问题。谢谢!

编辑 - 不,我不是问哈希表是如何工作的。我知道那部分。

2 个答案:

答案 0 :(得分:5)

Python字典基本上是哈希表的实现。现在,问题是什么是哈希表?来自维基百科,简短而甜蜜的回答:

  

哈希表(也是哈希映射)是用于实现的数据结构   关联数组,一种可以将键映射到值的结构   哈希表使用哈希函数来计算桶或槽数组的索引,从中可以找到正确的值。

SO中的这两个问题涵盖了您感兴趣的一些内容:

How are Python's Built In Dictionaries Implemented

How can Python dict have multiple keys with same hash?

如果我继续下去,我会重复同样的事情。

答案 1 :(得分:0)

The specification读取

  

Python内置的另一个有用的数据类型是字典(参见   映射类型 - 字典)。有时在其他字典中找到字典   语言为“关联记忆”或“关联数组”。   最好将字典视为一组无序的键:值   对,要求密钥是唯一的(在一个内   字典)。一对大括号创建一个空字典:{}。配售   以逗号分隔的大括号内的键:值对列表添加   初始键:字典的值对;这也是方式   字典写在输出上。

通过hash function

以确定的方式将项目放入内存中