Python 字典(内置哈希表)是如何实现的? [复制]
Posted
技术标签:
【中文标题】Python 字典(内置哈希表)是如何实现的? [复制]【英文标题】:How are Python dictionaries (builtin hashtables) implemented? [duplicate] 【发布时间】:2013-11-16 17:04:23 【问题描述】:我想知道 python dict
(dictionary/hashtable) 是如何实现的。特别是,如果我写类似
my_dict = "key": "key: "key": "value"
python 解释器可能做什么?我想知道它的内部工作原理。
它是否将每个字典视为一个对象(大部分是)?如果是这样,不同字典中相同键的散列是否相同?例如
dict1 = "key": "value", "k": "v"
dict2 = "key": [1, 2.], "k": "value"
在这 2 个不同的字典中查找键会有多大不同?另外,它如何决定桶的大小?还是类似于列表大小的处理? 希望你能得到我的问题。谢谢!
编辑 - 不,我不是在问哈希表是如何工作的。我知道那部分。
【问题讨论】:
您是在问dict1["key"]
调用的哈希函数是否与dict2["key"]
调用的哈希函数相同?
查看这个问题的答案:***.com/questions/13514716/…
我可以将自己的问题标记为重复吗?因为,我found an answer,但问题不是那么具体。
所有主要的python实现都是开源的。随意查看源代码。
糟糕,我说的“内部实现”太过分了。我要求提供理论/描述性解释(不是实际代码)(在重复问题中得到它)。
【参考方案1】:
Python 字典基本上都是哈希表的实现。现在,问题是什么是哈希表?来自***,简短而甜蜜的答案:
哈希表(也称为哈希映射)是一种数据结构,用于实现 关联数组,一种可以将键映射到值的结构 哈希表使用哈希函数计算桶或槽数组的索引,从中可以找到正确的值。
SO 中的这两个问题涵盖了您感兴趣的一些内容:
How are Python's Built In Dictionaries Implemented
How can Python dict have multiple keys with same hash?
如果我再往前走,我会重复同样的事情。
【讨论】:
【参考方案2】:The specification 读取
Python 中内置的另一种有用的数据类型是字典(参见 映射类型 - 字典)。字典有时会在其他地方找到 语言称为“联想记忆”或“联想数组”。 最好将字典视为一组无序的键:值 对,要求密钥是唯一的(在一个 字典)。一对大括号创建一个空字典:。配售 大括号内的键:值对的逗号分隔列表添加 字典的初始键:值对;这也是方法 字典写在输出上。
并通过hash function 以确定的方式将项目放置在内存中
【讨论】:
以上是关于Python 字典(内置哈希表)是如何实现的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Python 字典转换为 JavaScript 哈希表?