这个哈希表python代码有什么问题?

问题描述 投票:0回答:1

这是我在网上找到的一段用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)

我应该提供什么作为输入来检查代码是否正常工作?

python output hashtable
1个回答
0
投票

参数应该是一系列键值对:

t = hashtable([('a', 1), ('b', 3)])
print(t.get_value('b'))

应该打印

3

顺便说一句,为了减少碰撞的可能性,

self.bucket_size
应该明显大于
len(items)

© www.soinside.com 2019 - 2024. All rights reserved.