Direkt zum Hauptinhalt springen
eLearner.app
Modul 3 · Lektion 3 von 411/36 im Kurs~12 min
Lektionen des Moduls (3/4)

Dictionaries

Ein Dictionary (dict) ist eine Schlüssel → Wert (Key-Value) Zuordnung: Du verknüpfst einen Schlüssel (fast immer einen String) mit einem Wert eines beliebigen Typs. Es ist die grundlegende Datenstruktur zur Modellierung realer Entitäten.

Ein Dictionary erstellen

Python
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# alternativer Konstruktor
utente = dict(nome="Ada", anni=36, attivo=True)

Schlüssel müssen hashbar (unveränderlich) sein: Strings, Zahlen, Tupel aus hashbaren Elementen. Werte hingegen können alles sein — sogar Dictionaries.

Zugriff, Ändern, Löschen

Python
utente["nome"]            # 'Ada'
utente["email"]           # KeyError!
utente.get("email")       # None       (sicherer Standardwert)
utente.get("email", "—")  # '—'        (benutzerdefinierter Standardwert)
utente["citta"] = "Roma"  # fügt hinzu / aktualisiert
del utente["attivo"]      # entfernt

Iterieren über ein Dictionary

Python
for chiave in utente:               # iteriert über die SCHLÜSSEL (Standardverhalten)
    print(chiave, utente[chiave])

for chiave in utente.keys():        # explizit
    ...

for valore in utente.values():
    print(valore)

for chiave, valore in utente.items():    # das gängigste Muster
    print(f"{chiave} = {valore}")

Die Iterationsreihenfolge entspricht der Einfügereihenfolge (garantiert ab Python 3.7 aufwärts).

Existiert der Schlüssel?

Python
"nome" in utente     # True
"email" in utente    # False     (sucht nach SCHLÜSSELN, nicht nach Werten!)

setdefault: Beim ersten Zugriff initialisieren

Ein häufiges Muster: "Wenn der Schlüssel nicht existiert, trage den Standardwert ein; in jedem Fall gib den aktuellen Wert zurück".

Python
gruppi = {}
for nome in ["Ada", "Linus", "Ada", "Grace", "Linus", "Ada"]:
    gruppi.setdefault(nome, []).append(1)
# {'Ada': [1, 1, 1], 'Linus': [1, 1], 'Grace': [1]}

Es gibt auch collections.Counter für den spezifischen Fall des Zählens (wir werden es im Modul stdlib sehen).

Iterieren über Dictionaries

Du kannst auf verschiedene Arten über ein Dictionary iterieren:

  • for k in d: iteriert nur über Schlüssel (Standardverhalten).
  • for k, v in d.items(): iteriert gleichzeitig über Schlüssel-Wert-Paare (sehr nützlich).
  • for v in d.values(): iteriert nur über Werte.

Probiere es aus

Übung#python.m3.l3.e1
Versuche: 0Wird geladen…

Gegeben sei `user = {'nome': 'Ada', 'anni': 36}`. Füge den Schlüssel 'email' = 'ada@ex.com' hinzu und weise dann `email_or_default` den Wert des Schlüssels 'telefono' unter Verwendung von .get mit dem Standardwert 'sconosciuto' zu. Evaluiere `email_or_default`.

Editor wird geladen…
Hinweis anzeigen

.get('telefono', 'sconosciuto') löst keinen KeyError aus.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#python.m3.l3.e2
Versuche: 0Wird geladen…

Gegeben sei `prices = {'mela': 1.2, 'pera': 1.5, 'kiwi': 2.0}`. Berechne die Summe aller Werte und weise sie `total` zu. Evaluiere `total`.

Editor wird geladen…
Hinweis anzeigen

sum(prices.values()) summiert alle Werte.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#python.m3.l3.e3
Versuche: 0Wird geladen…

Gegeben sei das Dictionary `user = {'name': 'Alice'}`. Verwende die Methode `.get()`, um den Wert des Schlüssels `'role'` abzurufen. Wenn der Schlüssel nicht existiert, soll der Standardwert `'guest'` zurückgegeben werden. Speichere das Ergebnis in `user_role` und evaluiere es.

Editor wird geladen…
Hinweis anzeigen

Die get-Methode akzeptiert einen zweiten Parameter als Fallback: user.get('role', 'guest').

Lösung nach 3 Versuchen verfügbar