这是我在网上找到的一段用python创建哈希表的代码。但它不能将任何值作为输入。这段代码有什么问题?
class hashtable:
def __init__(self, items):
self.bucket_size = len(items)
self.buckets = [[] for i in range(self.bucket_size)]
self.assign_buckets(items)
def assign_buckets(self, items):
for key, value in items:
hash_value = hash(key)
index = hash_value % self.bucket_size
self.bucket[index].append((key,value))
def get_value(self, input_keys):
hash_value = hash(input_keys)
index = hash_value % self.bucket_size
bucket = self.buckets[index]
for key, value in bucket:
if key == input_keys:
return(value)
我应该提供什么作为输入来检查代码是否正常工作?
参数应该是一系列键值对:
t = hashtable([('a', 1), ('b', 3)])
print(t.get_value('b'))
应该打印
3
顺便说一句,为了减少碰撞的可能性,
self.bucket_size
应该明显大于 len(items)