0%

Dictionaries und andere Sammlungen

Die passende Sammlung wählen

Listen und Dictionaries lösen bereits zwei unterschiedliche Aufgaben beim Modellieren:

  • Eine Liste hält Einträge in einer nützlichen Reihenfolge.

  • Ein Dictionary gibt Werten aussagekräftige Bezeichnungen.

Eine weitere Sammlung verdient einen Platz in diesem Kurs, weil sie eine andere Frage beantwortet: „Ist dieser Wert schon vorgekommen?“

Set: jeden Wert einmal behalten

Ein set speichert eindeutige Werte. Wenn ein Wert in einem Set-Literal zweimal vorkommt, behält das Set trotzdem nur ein Exemplar:

Try it

Die Prüfung auf Zugehörigkeit gibt True aus. Die Ausgabereihenfolge des Sets kann variieren. Verwende deshalb kein Set, wenn es auf den ersten, zweiten oder letzten Eintrag ankommt. Es garantiert Eindeutigkeit, keine Position.

Das macht ein Set nützlich für Fragen wie:

  • Welche Tags sind vorgekommen?

  • Wurde dieser Benutzername schon verwendet?

  • Welche Quizkategorien sind vorhanden?

Nach der benötigten Eigenschaft auswählen

Angenommen, ein Quizprogramm speichert drei Arten von Daten:

question_order = ["warm-up", "loops", "debugging"]

question = {
    "prompt": "Which keyword ends a loop?",
    "answer": "break",
}

seen_categories = {"basics", "loops"}

Jede Sammlung sagt etwas anderes aus:

BedarfSammlungGarantie
Einträge in einer sinnvollen ReihenfolgeListePositionen und Reihenfolge bleiben erhalten
benannte Felder oder Zugriff über Schlüssel auf WerteDictionarySchlüssel erklären Werte und ermöglichen ihren Abruf
eindeutige ZugehörigkeitSetjeder Wert kommt höchstens einmal vor

Eine Liste kann doppelte Tags enthalten. Ein Dictionary könnte Bezeichnungen für sie erfinden. Beides ist kein falscher Python-Code, aber das Set drückt die Regel direkt aus.

Die Besonderheit des leeren Sets

Eine leere Liste ist [] und ein leeres Dictionary ist {}. Für ein leeres Set verwendest du set():

seen_categories = set()

Python hat {} bereits den Dictionaries zugeordnet. Der Funktionsaufruf vermeidet deshalb ein mehrdeutiges Klammerpaar. Das ist eine kleine Eigenheit, aber immerhin eine eindeutige.

Hier reicht es, die Grundidee zu erkennen. Du solltest ein Set wählen können, wenn es um Eindeutigkeit geht, und mit in die Zugehörigkeit prüfen können. Weiterführende Set-Operationen können warten, bis ein Programm sie tatsächlich braucht.

Welche Sammlung eignet sich am besten für eindeutige Tags, wenn ihre Reihenfolge keine Rolle spielt?