Я пытаюсь решить эту загадку для новичка:
Я создал эту функцию:
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: «невозможно назначить вызов функции»