【问题标题】:What does "Bucket" mean in python?python中的“桶”是什么意思?
【发布时间】:2016-08-03 05:53:50
【问题描述】:

我正在阅读 Zed Shaw 的“Learn Python the Hard way”一书,目前我正在学习字典。

在其中一个练习中,他创建了一个 hashmap.py 模块。

def new(num_buckets=256):
    """Intializes a Map with a given number of buckets"""
    aMap = []
    for i in range(0, num_buckets):
        aMap.append([])
    return aMap

这是他创建的第一个函数。我仍然不知道他在做什么我前一阵子迷路了,(他声称如果你只是继续复制并尝试理解代码,它最终会开始变得有意义)所以现在我试图通过谷歌搜索来剖析代码和看论坛。无论如何,bucket 到底是什么?它是某种程序员的胡言乱语还是有意义?这个名字几乎出现在他创建的每个函数中。

这是他用桶创建的另一个函数。

def get_bucket(aMap,key):
    bucket_id = hash_key(aMap,key)
    return aMap[bucket_id]

我搜索了 stack-overflow 和网络,但无法确定 bucket 是什么... 我仍然是初学者,几乎是中级程序员,所以请注意这一点。

提前致谢。 - 艾伦

【问题讨论】:

  • 您可以将存储桶视为数组的元素。作为细胞,作为可以生存的空间。在 hashmap 的情况下 - 它将对象存储为键、值对,将此键、值对视为单个实体 - 该实体存在于桶中(哈希图只是一个数组,其中每个单元称为桶,因为复杂对象可以存在于. 和 key 用于计算存储元素的存储桶索引)。我不是 python 开发者,但我猜散列映射原则在任何地方都是一样的
  • hashmap 是一种有用的数据结构,它使用桶来保存数据。但是恕我直言,在介绍性代码中使用它是一个 BAD 的想法。这个例子是 SO Python 聊天室推荐Learn Python the Hard way的原因之一。请看What tutorial should I read?;您可能还想查看链接文章 LPTHW Complaints,尽管该列表中的大部分内容只有在您的 Python 和编程技能更高级时才有意义。
  • 存储桶是对象的容器(就像普通的物理存储桶一样)。另见here
  • @PM2Ring 哈哈谢谢你对 LPTHW 的警告。还好书没看太多。在 LPTHW 投诉中,我发现:#15 在 38 中教授方法之后,Ex 39 教授字典和……如何构建哈希表类?! 这是我在此线程中讨论的示例。感谢您的提醒。 - 艾伦

标签: python python-2.7 python-3.x dictionary hashmap


【解决方案1】:

使用哈希,您可以将数据存储在键值对中。

每个键都可以动态添加,并且必须在内部存储在某种表中。但由于此类条目的数量有限,因此多个键可以映射到单个条目。

因此,您必须在“桶”中为单个表条目存储多个值,该桶可以是数组、链表等,因此可以为单个哈希表条目保存多个键值对.

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多