私はこの初心者のパズルを解こうとしています:
私はこの関数を作成しました:
def bucket_loop(htable, key):
bucket = hashtable_get_bucket(htable, key)
for entry in bucket:
if entry[0] == key:
return entry[1]
return None
そして、次の方法で他の2つの関数(以下)で呼び出す必要があります。要素entry [1]の値を変更するか、このリスト(entry)に新しい要素を追加します。しかし、 「関数呼び出しに割り当てることはできません」(Pythonでは関数呼び出しへの割り当ては違法である)ため、関数bucket_loopの呼び出しを私が行ったように行うことはできません。これを行うための代替手段(私が書いたコードに最も似ています)は何ですか(bucket_loop(htable、key)= value and 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:"関数呼び出しに割り当てることができません"