【发布时间】:2020-05-04 23:22:50
【问题描述】:
我正在研究哈希表,我对这个用 Python 编写的哈希表实现有点困惑,它来自教科书。我理解所有这一切,除了在 addEntry() 方法内部有一个 for 循环,它执行 hashBucket[i] = (dictKey, dictVal) if hashBucket[i][0] == dictKey 我对它的作用有点困惑。
class intDict(object):
def __init__(self, numBuckets):
self.buckets = []
self.numBuckets = numBuckets
for i in range(numBuckets):
self.buckets.append([])
def addEntry(self, dictKey, dictVal):
hashBucket = self.buckets[dictKey%self.numBuckets]
for i in range(len(hashBucket)):
if hashBucket[i][0] == dictKey:
hashBucket[i] = (dictKey, dictVal)
return
hashBucket.append((dictKey, dictVal))
def getValue(self, dictKey):
hashBucket = self.buckets[dictKey%self.numBuckets]
for e in hashBucket:
if e[0] == dictKey:
return e[1]
return None
def __str__(self):
result = '{'
for b in self.buckets:
for e in b:
result = result + str(e[0]) + ':' + str(e[1]) + ','
return result[:-1] + '}'
【问题讨论】:
-
没有深入阅读其余部分,该部分只是检查第 0 个索引(我猜测的键)是否已经存在,然后覆盖键值对。
标签: python algorithm hashtable