Erklärung zur Lektion
Nach dieser Lektion kannst du:
.get(key, default) optionale Schlüssel lesen und dabei vorhandene Falsy-Werte bewahren..items() Schlüssel-Wert-Paare durchlaufen und jedes Paar entpacken.Dictionaries ordnen Namen Werte zu. Die vorherige Lektion behandelte record[key], was bei einem fehlenden Schlüssel KeyError auslöst. Wenn ein optionales Feld erwartet wird, gibt record.get(key, fallback) den Ersatzwert nur zurück, wenn der Schlüssel fehlt. Ein vorhandener Wert wie 0, False, "" oder None bleibt unverändert.
Ein Dictionary ist iterierbar: for key in record besucht seine Schlüssel. Mit den ausdrücklichen Methoden .keys() und .values() greifst du nur auf Schlüssel oder nur auf Werte zu. Verwende .items(), wenn du beides brauchst: Jede Iteration liefert ein (key, value)-Paar, das du entpacken kannst.
Moderne Python-Dictionaries bewahren die Einfügereihenfolge, sodass eine Schleife über ein unverändertes Dictionary der Reihenfolge folgt, in der die Einträge eingefügt wurden. Das bedeutet nicht, dass Schlüssel numerische Indizes sind, und auch nicht, dass alphabetisch sortiert wird.
Das .get() eines Dictionarys dient dem Nachschlagen; .items() dient der Iteration über Paare. Sie lösen unterschiedliche Probleme und werden besonders mächtig, wenn man sie mit bedingten Zählungen kombiniert.
Der Ersatzwert gilt nur, wenn der Schlüssel fehlt.
limits = {"retries": 0, "timeout": 15}
print(limits.get("retries", 3))
print(limits.get("workers", 2))Ausgabe:
0
2Wenn du direkt über das Dictionary iterierst, erhältst du seine Schlüssel; .keys() macht diese Absicht ausdrücklich.
channels = {"email": True, "sms": False}
for channel in channels.keys():
print(f"Channel: {channel}")Ausgabe:
Channel: email
Channel: smsVerwende .values(), wenn die Schlüssel die Berechnung nicht beeinflussen.
durations = {"lint": 8, "build": 12, "test": 20}
total = 0
for duration in durations.values():
total += duration
print(f"Total: {total}")Ausgabe:
Total: 40.items() liefert jede Bezeichnung zusammen mit ihrem zugehörigen Wert.
statuses = {"api": "ready", "worker": "paused"}
for name, status in statuses.items():
print(f"{name}: {status}")Ausgabe:
api: ready
worker: paused| Bedarf | Python |
|---|---|
| Optionaler Zugriff | record.get("name", "unknown") |
| Nur Schlüssel | record.keys() oder for key in record |
| Nur Werte | record.values() |
| Schlüssel und Werte | record.items() |
| Über Paare iterieren | for key, value in record.items(): |
record.get("key", default) ersetzt einen vorhandenen Falsy-Wert nicht.for a, b in record iteriert über Schlüssel, nicht über Paare; verwende .items(), um Einträge zu entpacken..keys(), .values() und .items() geben Ansichten (views) zurück, keine gewöhnlichen Listenkopien..values() geht die zugehörige Schlüsselbezeichnung verloren, wenn deine Ausgabe beides braucht.