【发布时间】:2020-12-13 04:30:21
【问题描述】:
基本上,我想知道当我运行这样的事情时会发生什么或可能会发生什么:
for key in some_hash_map.keys():
print(key)
仅仅是使用反向哈希函数吗?
【问题讨论】:
-
hash (set or map) 是桶的集合(被占用或未被占用)。遍历键意味着遍历占用的存储桶
基本上,我想知道当我运行这样的事情时会发生什么或可能会发生什么:
for key in some_hash_map.keys():
print(key)
仅仅是使用反向哈希函数吗?
【问题讨论】:
一个典型的哈希表可以实现为一个桶数组,每个桶都有一个条目的链表。
哈希查找通过运行哈希函数找到正确的存储桶,然后搜索存储桶。
遍历键是通过遍历桶来实现的,依次搜索每个列表。
如果存储桶太多,则会浪费内存并且迭代速度很慢。太少了,链表会变慢。但是我们可以动态调整桶的数量,以固定每个键的开销。
如果散列函数不能很好地工作,那么散列将执行得非常糟糕。
【讨论】: