来自Fluent Python ...
要获取my_dict [search_key]上的值,Python调用 hash(search_key)获取search_key的哈希值,并使用 该数字的最低有效位作为偏移量,用于查找存储桶 在哈希表中(使用的位数取决于当前大小 的表)。如果找到的存储桶为空,则会引发KeyError。
如果仅使用哈希值的最低有效位,则空存储桶和非空存储桶是否可能共享相同的最低有效位,并且由于首先遇到了空存储桶而错误地引发了KeyError ?
在这种情况下,将某物用作“偏移量”意味着什么?请提供示例。
答案 0 :(得分:1)
空存储桶和非空存储桶是否可能共享相同的最低有效位
存储桶通过其位置进行标识,即每个存储桶在表中都有不同的位置。这就是为什么您不能让两个存储桶共享最低有效位-这些位唯一确定存储桶的原因。
您可以拥有的是将两个键散列为相同的值-或共享相同的最低位的两个不同的值-这种情况称为collision 。 Python通过查找另一个存储桶来解决插入时的冲突,并通过将存储在存储桶中的键与要查找的键进行比较来查找冲突。一个好的哈希表的目的是使冲突最小化,这是通过使用好的哈希函数并保持表稀疏来实现的,从而使存储桶有所散布。
在这种情况下,将某物用作“偏移”意味着什么?
偏移量是铲斗位置的另一个词。只是存储它们的数组中特定存储区的索引。