【问题标题】:How are Python dictionaries (builtin hashtables) implemented? [duplicate]Python 字典(内置哈希表)是如何实现的? [复制]
【发布时间】: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"] 调用的哈希函数相同?
  • 查看这个问题的答案:stackoverflow.com/questions/13514716/…
  • 我可以将自己的问题标记为重复吗?因为,我found an answer,但问题不是那么具体。
  • 所有主要的python实现都是开源的。随意查看源代码。
  • 糟糕,我说的“内部实现”太过分了。我要求提供理论/描述性解释(不是实际代码)(在重复问题中得到它)。

标签: python dictionary hashmap hashtable


【解决方案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 以确定的方式将项目放置在内存中

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2010-09-24
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2014-09-14
      相关资源
      最近更新 更多