私は線形プロービングでさまざまなサイズのハッシュテーブルを作成するプログラムを書いています。 エラー自体はinsertHashTable(から呼び出されたこの関数からですPython: "'Nonetype'は反復処理なしで反復不可能です
def insertHashTable( loadNum, hashTable ):
i = 0
while i < ((loadNum*size)-1):
hashTable.insert(data[i],data[i])
i = i + 1
return hashTable
)
:私はDEF(挿入機能を持っている探査線形のための私のADTで)次の関数からの私のメインのスクリプトから呼び出されます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
このコードの2行目に非タイプのエラーが表示されます。最後に、_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()関数でこのようなエラーが存在することになる理由はわかりません。
私はハッシュテーブルがテーブルの初期化時にすべてのスロットに「なし」を持っていることは知っていますが、多分そこに問題がありますか?
(c + startLoc)<(self._size -1)は、最初の反復では偽で、返されるケースはありません。あなたはその事件を考慮しなかったと思います。 – FatmaT