
Dictionary
Ein Dictionary ist eine Datenstruktur in der Programmierung, die Werte unter frei wählbaren Schlüsseln speichert. Man sucht darin nicht nach Position, sondern nach Namen — ähnlich wie in einem Wörterbuch, in dem man ein Wort nachschlägt.
Programme müssen sich Dinge merken. Dafür gibt es verschiedene Formen, Daten im Speicher abzulegen. Eine besonders verbreitete Form ist das Dictionary. Darin liegt jeder gespeicherte Wert unter einem selbst gewählten Namen, dem Schlüssel. Statt zu sagen „gib mir den dritten Eintrag“ sagt man „gib mir den Eintrag mit dem Namen Hauptstadt“. Der Name Dictionary kommt vom englischen Wort für Wörterbuch: dort schlägt man ebenfalls nach Stichwort nach, nicht nach Seitenzahl.
Warum Nachschlagen per Name schneller ist
Die naheliegende Alternative ist eine einfache Liste. Wer darin etwas sucht, muss im schlimmsten Fall jeden Eintrag durchgehen. Bei zehn Einträgen ist das egal. Bei zehn Millionen Einträgen ist es ein Problem. Ein Dictionary findet den passenden Eintrag dagegen fast unabhängig von der Größe — bei zehn Millionen Einträgen genauso schnell wie bei zehn.
Dazu kommt ein zweiter Vorteil: Lesbarkeit. Code, in dem „nutzer['email']“ steht, erklärt sich selbst. Code, in dem „nutzer[4]“ steht, zwingt jeden Leser zum Nachschlagen, was Position vier bedeutet. Große Programme bestehen zu einem erheblichen Teil aus solchen benannten Zugriffen.
Deshalb ist das Dictionary in fast jeder modernen Programmiersprache eingebaut. In Python heißt es dict, in JavaScript verhält sich jedes Object so, in Java gibt es die HashMap. Die Namen unterscheiden sich, die Idee ist überall dieselbe.
Der Trick mit der Hash-Funktion
Damit das Nachschlagen so schnell geht, wird der Schlüssel in eine Zahl umgerechnet. Diese Umrechnung übernimmt eine sogenannte Hash-Funktion. Sie macht aus dem Text „Hauptstadt“ zum Beispiel die Zahl 74. Der Wert wird dann an Speicherplatz 74 abgelegt. Sucht das Programm später wieder nach „Hauptstadt“, rechnet es dieselbe Zahl aus und geht direkt an diese Stelle. Es muss nichts durchsuchen.
Das funktioniert nur, wenn die Hash-Funktion immer dasselbe Ergebnis liefert. Zwei verschiedene Schlüssel können aber zufällig auf derselben Zahl landen. Das nennt man eine Kollision. Dann legt das Dictionary beide Einträge an dieser Stelle ab und prüft beim Suchen kurz nach, welcher gemeint war. Solche Fälle sind selten genug, um die Geschwindigkeit kaum zu beeinflussen.
Eine wichtige Einschränkung: Schlüssel müssen eindeutig sein. Speichert man zweimal etwas unter „Hauptstadt“, überschreibt der zweite Wert den ersten. Ein häufiger Irrtum ist außerdem, ein Dictionary für sortierte Daten zu halten. Die Einträge stehen in keiner sinnvollen Reihenfolge; wer Sortierung braucht, muss sie selbst herstellen.
Vom JSON-Format bis zu KI-Modellen
Wer schon einmal in eine Konfigurationsdatei geschaut hat, hat Dictionaries gesehen. Das Format JSON, mit dem Programme im Internet Daten austauschen, besteht im Kern aus Schlüssel-Wert-Paaren. Ruft eine App Wetterdaten ab, kommt so eine Struktur zurück: Temperatur, Ort, Zeitstempel, jeweils unter einem Namen.
Auch in der KI taucht der Begriff auf, allerdings in zwei Bedeutungen. Zum einen ganz praktisch: Einstellungen für ein Modell werden als Dictionary übergeben, ebenso die trainierten Gewichte, die in Python-Bibliotheken als state dict gespeichert werden. Zum anderen bezeichnet Dictionary in manchen Forschungsarbeiten eine Sammlung gelernter Merkmale, etwa bei Verfahren, die untersuchen, welche Konzepte ein Modell intern unterscheidet.
Für den Anfang genügt die praktische Bedeutung. Wer programmieren lernt, benutzt Dictionaries meist schon in den ersten Wochen — für Wortzählungen in einem Text, für Nutzerdaten oder für Übersetzungstabellen. Es ist eine der wenigen Datenstrukturen, die man täglich braucht.