如何在Python的哈希表中实现动态哈希?

2024-09-26 22:12:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,目前我有一个哈希表类,它通过线性探测来解决冲突。但是,如果负载因子大于2/3,我希望将数组的大小加倍。但是,我一直得到错误

if self.array[i]!=None:
IndexError: invalid index

是因为每次更改表大小时,getLoadandAverageProbeLength中的大小都不更新吗?在

我的设置项功能:

^{pr2}$

我的getLoadAndAverageProbeLength

def getLoadAndAverageProbeLength(self,probeLength):
    count=0
    averageProbeLength=0
    for i in range(self.table_size):
        if self.array[i]!=None:
            count+=1

    load= count/self.table_size

    if count!=0:
        averageProbeLength=probeLength/count
    return load,averageProbeLength

这是我的哈希表的类构造函数:

def __init__(self, size=2):
    self.count = 0
    self.table_size = size
    self.array = build_array(self.table_size)
    self.collision=0
    self.totalProbeLength=0

这是我的回溯:

   Traceback (most recent call last):
  File "C:\Users\User\Desktop\Assignment3Task3(b).py", line 18, in <module>
main()
 File "C:\Users\User\Desktop\Assignment3Task3(b).py", line 15, in main
readFile(filename)
 File "C:\Users\User\Desktop\Assignment3Task3(b).py", line 10, in readFile
hashTable[line]=line
 File "C:\Users\User\Desktop\Assignment3Task4.py", line 55, in __setitem__
self.__setitem__(key,value)
 File "C:\Users\User\Desktop\Assignment3Task4.py", line 29, in __setitem__
load,averageProbeLength= self.getLoadAndAverageProbeLength(self.totalProbeLength)
File "C:\Users\User\Desktop\Assignment3Task4.py", line 83, in getLoadAndAverageProbeLength
if self.array[i]!=None:

索引器错误:索引无效


Tags: inpyselfsizeifcountlinetable

热门问题