0
我正在編寫一個程序,用線性探測形成不同大小的哈希表。在我的線性ADT探測我有一個功能高清插入(),這是從我的主要腳本調用從以下功能:Python:「'Nonetype'是不可迭代的」沒有任何迭代
def insertHashTable( loadNum, hashTable ):
i = 0
while i < ((loadNum*size)-1):
hashTable.insert(data[i],data[i])
i = i + 1
return hashTable
錯誤本身就是從這個功能是從insertHashTable稱爲()
def insert(self, key, value):
(found, slot) = self._findSlot(key) #ERROR HERE
if not found :
self._table[slot] = _MapEntry(key, value) #custom datatype
self._count += 1
return not found
我得到這個代碼的第二行nonetype錯誤。最後,_findSlot()如下:
def _findSlot(self, key):
startLoc = self._hash1(key)
self.slotsAccessed += 1
if self._table.__getitem__(startLoc) == None:
return (False, startLoc)
else:
c = 0
while (c+startLoc) < (self._size -1):
if self._table[startLoc+c] == None:
return (False, startLoc+c)
elif self._table.__getitem__(startLoc).key == key:
return (True, startLoc+c)
c = c + 1
self.slotsAccessed += c
我不知道爲什麼會有在insertHashTable()函數,這樣的錯誤,看到沒有迭代與鍵發生。
但是我確實知道我的散列表在表的初始化的每個槽中都有'None',可能有一些問題呢?
(c + startLoc)<(self._size -1)在第一次迭代中可能爲False,並且您沒有返回大小寫。我想你沒有考慮過這種情況。 – FatmaT