Python:列表索引超出哈希表程序的范围

时间:2019-05-30 14:48:52

标签: python python-3.x list hash

不确定该代码是否有效,并且显示索引超出范围,我不知道如何解决

class Hash():

    def __init__(self, user):
        self.max = user
        self.table = []

    def isFull(self):
        if len(self.table) == self.max:
            return True
        else:
            return False
    def insert(self,item):
        if self.isFull():
            print('Hash table is full')
        else:
            hashing = self.index(item)
            if self.table[hashing] == None:
                self.table[hashing] = item
            else:
                for a in range(len(self.table)):
                    if self.table[a] == None:
                        self.table[a] = item
        return self.table

    def index(self,item):
        hashval = int(item) % self.max
        return hashval


    def searching(self,item):
        pass

user = int(input('Enter a number for the maximum number of items that can be stored in the hash table: '))

它表示索引超出范围是由于-> if self.table [hashing] == None:

1 个答案:

答案 0 :(得分:0)

  1. 您正在使用列表而不是字典。您应将<label class="hidden">Hidden label</label> .hidden { display: none;} 替换为self.table = []

  2. 如果self.table = {}
  3. if self.table[hashing] == None:将引发错误。您应该将其替换为:hashing not in self.table

  4. if hashing not in self.table:不会遍历for a in range(len(self.table)):,因为它不是列表。 self.table可以使用。

这是正确的代码:

for a in self.table: