Ich mache gerade Hashing in meiner Klasse. Ich muss eine doppelte Hashfunktion erstellen, die eine Liste annimmt und doppeltes Hashing verwendet und eine neue Liste zurückgibt.Hausaufgaben auf Double Hashing - Python
Ich verstehe, wie eine Liste doppelt Hashing verwendet, aber ich habe Schwierigkeiten, den Code dafür aufzuschreiben.
hashkey = key % len(list)
steps = q - (key % q)
new_hashkey = steps + hashkey
#q = double_hash_value
Dies ist die doppelte Hashing-Funktion, die ich in der Klasse gelernt habe. Ich habe nur Schwierigkeiten, es in den Code zu implementieren.
Dies ist mein Versuch so weit:
def double_hashing(keys, hashtable_size, double_hash_value):
hashtable_list = [None] * hashtable_size
for i in range(len(keys)):
hashkey = keys[i] % hashtable_size
if hashtable_list[hashkey] is None:
hashtable_list[hashkey] = keys[i]
else:
new_hashkey = hashkey
while hashtable_list[new_hashkey] is not None:
steps = double_hash_value - (keys[i] % double_hash_value)
new_hashkey = hashkey + steps
hashtable_list[new_hashkey] = keys[i]
return hashtable_list
values = [26, 54, 94, 17, 31, 77, 44, 51]
double = double_hashing(values, 13, 5)
print('Double =', double)
Ich bin ziemlich sicher, dass dies zu sein, direkt in der Nähe ist, aber ich bin nur einen dummen Fehler oder etwas zu machen. Ich verstehe, wie Double Hashing funktioniert, aber dieser Code funktioniert nicht.
sollte die Ausgabe für dieses:
[26, None, 54, 94, 17, 31, 44, 51, None, None, None, None, 77]
aber meine Ausgabe ist:
[26, None, 54, 94, 17, 31, 44, None, None, None, None, None, 77]
Der Wert 51 in Indexposition nicht hinzugefügt wird.
Jede Hilfe wird geschätzt. Vielen Dank.
Dank für mich Menschen zu helfen. Danke auch für das Aufzeigen meiner Fehler. Ich wusste, dass ich etwas Dummes tat. –