Erklärung zur Lektion
Nach dieser Lektion kannst du:
Die Wahl einer Datenstruktur ist eine Entwurfsentscheidung. Verwende eine Liste, wenn Reihenfolge und wiederholte Werte wichtig sind; ein Tupel für einen festen Datensatz; eine Menge für Eindeutigkeit und Zugehörigkeit; und ein Dictionary für den schlüsselbasierten Zugriff.
Eine Menge allein ist kein geordnetes Ergebnis. Wenn du das erste Vorkommen jedes Elements in seiner ursprünglichen Reihenfolge willst, verwende eine Menge, um dir zu merken, was du bereits gesehen hast, und eine Liste, um die Ergebnisse zu sammeln. So kombinierst du die Stärken beider Strukturen.
Du kannst Sammlungen auch verbinden: Durchlaufe eine Liste von Datensätzen, schlage Details per Schlüssel in einem Dictionary nach und füge ein umgewandeltes Ergebnis zu einer neuen Liste hinzu. Teile bei einem mehrstufigen Bericht die Arbeit in Normalisierung, Validierung, Zählung und Darstellung auf. Gib bei einer wiederverwendbaren Funktion die fertigen Daten zurück.
Hier ist keine neue fortgeschrittene Python-Syntax nötig. Die Herausforderung besteht darin, die passende Darstellung zu wählen und Techniken aus dieser Einheit und aus Python-Grundlagen für Programmierer zu kombinieren.
steps = ["build", "test", "build"]
release = ("v3", "eu")
tags = {"api", "worker", "api"}
ports = {"api": 8080, "worker": 9000}
print(len(steps))
print(release[0])
print(len(tags))
print(ports["worker"])Ausgabe:
3
v3
2
9000Jede Sammlung drückt einen anderen Bedarf aus: Reihenfolge, festen Datensatz, Eindeutigkeit oder Nachschlagen.
raw = ["api", "worker", "api", "cache"]
seen = set()
unique = []
for name in raw:
if name not in seen:
seen.add(name)
unique.append(name)
print(unique)Ausgabe:
['api', 'worker', 'cache']Die Liste behält die Reihenfolge; die Menge merkt sich, welche Namen bereits hinzugefügt wurden.
jobs = [{"name": "search"}, {"name": "backup"}]
owners = {"search": "Maya"}
labels = []
for job in jobs:
labels.append(f"{job['name']}: {owners.get(job['name'], 'unassigned')}")
print(labels)Ausgabe:
['search: Maya', 'backup: unassigned']Das Dictionary liefert für jeden Datensatz einen optionalen Nachschlagewert.
results = [("api", "passed"), ("worker", "failed"), ("cache", "passed")]
counts = {"passed": 0, "failed": 0}
for service, state in results:
if state in counts:
counts[state] += 1
print(f"Passed: {counts['passed']}")
print(f"Failed: {counts['failed']}")Ausgabe:
Passed: 2
Failed: 1Das feste Zähler-Dictionary hält die Berichterstattung vorhersagbar, auch wenn eine Kategorie null Ereignisse hat.
| Bedarf | Struktur oder Technik |
|---|---|
| Geordnete Werte, einschließlich Wiederholungen | list |
| Datensatz fester Größe | tuple |
| Verfolgung eindeutiger Zugehörigkeit | set |
| Details über eine Kennung nachschlagen | dict |
| Geordnete eindeutige Werte | Liste + Menge zusammen |
| Optionale zugehörige Daten | mapping.get(key, default) |
if mapping.get(key) als Existenzprüfung zu verwenden, verwirft gültige Falsy-Werte.