Seite 1 von 1

Hashtabelle

Verfasst: Freitag 8. April 2022, 20:16
von duffy6
Hallo zusammen,

ich will eine "Hashtabelle" selbst progammieren.
Dazu habe ich einige Zahlen (13 , 25, 7, 17, 19), die mit hash = zahl % 9 verarbeitet werden sollen und dann im entsprechenden "Fach" gespeichert werden.
Es soll bspw. 12 Fächer "geben".

Ich dachte nun an eine verschachtelte Liste in der Art:
meineListe[11][Anzahl_in_diesem_Fach_befindlichen_Zahlen]

Also so in der Art (im Bild mit anderen Zahlen):
Bild

Ich steige bei den verschachtelten Listen aber nicht durch.

Bisher habe ich sowas:

Code: Alles auswählen

tabellenGroesse = 12
#---------------------
def hashing(wert):
    rueckgabe = wert % 9
    return rueckgabe
# ---------------------

# leere Liste anlegen
meineListe=[]

for i in range(tabellenGroesse): #### --- hier Änderung
    zahl=int(input(str(i)+"-te Zahl eingeben, die gehasht werden soll:"))
    print(i, "--> Fach: \t", hashing(zahl))
    meineListe[hashing(zahl)].append(zahl)

print(meineListe)

Ich erhalte immer einen Fehler: IndexError: list index out of range"

Könnt ihr mir mal auf die Sprünge helfen?

Re: Hashtabelle

Verfasst: Freitag 8. April 2022, 20:26
von sparrow
Warum willst du so etwas selbst implementieren und verwendest kein dict?

Vielleicht solltest du dich allgemein noch einmal mit den Datenstrukturen von Python beschäftigen. Eine Liste funktioniert nicht so, wie du vermutest. Und das Wissen über Datentrukturen ist in Python essentiell.

Wie kommst du darauf, dass das "hashing(zahl)"-te Element von meineListe eine Liste ist, an die du etwas anhängen kannst? Woran machst du fest, dass das "hashing(zahl)"-te Element übehaupt existiert? Das dürfte schwer möglich sein, wenn du noch gar kein Element in der Liste hast.

Re: Hashtabelle

Verfasst: Freitag 8. April 2022, 21:30
von __deets__
Das sind Hausaufgaben, sparrow :)

Re: Hashtabelle

Verfasst: Freitag 8. April 2022, 23:16
von __blackjack__
Wobei es dort wo das Bild her ist http://www.peter-junglas.de/fh/vorlesun ... index.html , doch sogar eine Lösung gibt. Zwar in Java, aber immerhin eine Lösung: http://www.peter-junglas.de/fh/vorlesun ... tion7.html