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:
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:
| Bedarf | Sammlung | Garantie |
|---|---|---|
| Einträge in einer sinnvollen Reihenfolge | Liste | Positionen und Reihenfolge bleiben erhalten |
| benannte Felder oder Zugriff über Schlüssel auf Werte | Dictionary | Schlüssel erklären Werte und ermöglichen ihren Abruf |
| eindeutige Zugehörigkeit | Set | jeder 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?