什么是;“桶”;用python是什么意思?

什么是;“桶”;用python是什么意思?,python,python-2.7,python-3.x,dictionary,hashmap,Python,Python 2.7,Python 3.x,Dictionary,Hashmap,我正在读Zed Shaw写的《艰难地学习Python》,目前我正在学习字典 在其中一个练习中,他创建了一个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 这是他创建的第一个

我正在读Zed Shaw写的《艰难地学习Python》,目前我正在学习字典

在其中一个练习中,他创建了一个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和web,无法确定bucket是什么。。。 我还是一个初学者,几乎是中级程序员,所以请注意这一点

提前谢谢。
-Allen

使用散列,将数据存储在键值对中

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


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

您可以将bucket视为数组元素。作为细胞,作为某种东西可以生存的空间。对于hashmap,它将对象存储为键、值对,将该键、值对视为单个实体,该实体存在于bucket中(hashmap只是一个数组,其中每个单元格称为bucket,因为复杂对象可以存在于其中。键用于计算bucket的索引,将元素放在何处)。我不是python开发人员,但我想hashmap的原理在任何地方都是一样的。hashmap是一种有用的数据结构,它使用bucket来保存数据。但是在介绍性代码中使用它是个坏主意。这个例子就是为什么SO-Python聊天室不推荐用艰苦的方式学习Python的原因之一。请看,;您可能还想看看这篇链接文章,尽管其中大部分内容只有在您的Python和编程技能更高级时才有意义。bucket是对象的容器(就像普通的物理bucket一样)。另请参阅@PM2Ring哈哈,感谢您在LPTHW上发出的警告。幸好这本书我没读太多。在LPTHW投诉中,我发现了这样一点:#15在38年教授了方法之后,Ex 39教授字典和…如何构建哈希表类?!这就是我在这篇文章中提到的例子。谢谢你的提醒艾伦