我正在尝试解决这个新手难题:
我创建了这个函数:
def bucket_loop(htable, key):
bucket = hashtable_get_bucket(htable, key)
for entry in bucket:
if entry[0] == key:
return entry[1]
return None
我必须以下列方式在其他两个函数(如下)中调用它:更改元素 entry[1] 的值或将新元素附加到此列表(条目)。但是我不能像我那样调用函数 bucket_loop 因为“你不能分配给函数调用”(在 Python 中分配给函数调用是非法的)。执行此操作的替代方法(与我编写的代码最相似)是什么(bucket_loop(htable, key) = value 和 hashtable_get_bucket(htable, key).append([key, value]))?
def hashtable_update(htable, key, value):
if bucket_loop(htable, key) != None:
bucket_loop(htable, key) = value
else:
hashtable_get_bucket(htable, key).append([key, value])
def hashtable_lookup(htable, key):
return bucket_loop(htable, key)
提前感谢您的帮助!
这是使该脚本工作的其余代码:
def make_hashtable(size):
table = []
for unused in range(0, size):
table.append([])
return table
def hash_string(s, size):
h = 0
for c in s:
h = h + ord(c)
return h % size
def hashtable_get_bucket(htable, key):
return htable[hash_string(key, len(htable))]
类似的问题(但对我没有帮助):SyntaxError: "can't assign to function call"