Direkt zum Hauptinhalt springen
eLearner.app
Modul 6 · Lektion 2 von 422/36 im Kurs~10 min
Lektionen des Moduls (2/4)

Dict und Set Comprehension

Die gleiche Syntax wie für List Comprehensions funktioniert auch zum Erstellen von Dictionary- und Set-Werten — du änderst lediglich die Klammern.

Dictionary Comprehension

Syntax: {key: value for element in iterable}.

Python
quadrati = {n: n * n for n in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Häufiges Muster: Eine Liste von Tupeln in ein Dictionary umwandeln.

Python
coppie = [("a", 1), ("b", 2), ("c", 3)]
d = {k: v for k, v in coppie}
# {'a': 1, 'b': 2, 'c': 3}
# (entspricht dict(coppie) in diesem Fall)

Schlüssel und Werte eines Dictionaries vertauschen:

Python
originale = {"a": 1, "b": 2, "c": 3}
invertito = {v: k for k, v in originale.items()}
# {1: 'a', 2: 'b', 3: 'c'}

Ein Dictionary filtern:

Python
prezzi = {"mela": 1.2, "pera": 1.5, "kiwi": 2.5, "ananas": 4.0}
economici = {k: v for k, v in prezzi.items() if v < 2.0}
# {'mela': 1.2, 'pera': 1.5}

Set Comprehension

Syntax: {expression for element in iterable}. Identisch mit einer List Comprehension, jedoch mit geschweiften Klammern.

Python
parole = ["ciao", "mondo", "ciao", "python"]
uniche = {p.upper() for p in parole}
# {'CIAO', 'MONDO', 'PYTHON'}

Eindeutige Anfangsbuchstaben aus einer Liste von Namen:

Python
nomi = ["Ada", "Linus", "Grace", "Alan", "Guido"]
iniziali = {n[0] for n in nomi}
# {'A', 'L', 'G'}

Filtern + Transformation

Wie bei List Comprehensions filtert das abschließende if:

Python
{n: n * n for n in range(10) if n % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Dictionary Comprehensions zum Vertauschen von Schlüsseln und Werten

Ein sehr verbreitetes Muster zum Invertieren eines Dictionaries (Vertauschen von Schlüsseln und Werten, unter der Annahme, dass die Werte eindeutig sind) ist:

Python
orig_dict = {'a': 1, 'b': 2}
inv_dict = {value: key for key, value in orig_dict.items()}
# result: {1: 'a', 2: 'b'}

Probiere es aus

Übung#python.m6.l2.e1
Versuche: 0Wird geladen…

Gegeben sei `words = ['mela', 'pera', 'kiwi', 'banana']`. Erstelle `lengths` als ein Dictionary {word: len(word)}. Evaluiere `lengths`.

Editor wird geladen…
Hinweis anzeigen

p: len(p) for p in words

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#python.m6.l2.e2
Versuche: 0Wird geladen…

Gegeben sei `nums = [1, 2, 2, 3, 4, 4, 5]`. Erstelle `unique_squares` als ein SET (Menge) der Quadrate. Evaluiere `unique_squares`.

Editor wird geladen…
Hinweis anzeigen

Geschweifte Klammern ohne ':' = Set Comprehension.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#python.m6.l2.e3
Versuche: 0Wird geladen…

Gegeben sei die Liste von Strings `names = ["Alice", "Bob"]`. Verwende eine Dictionary Comprehension, um ein Dictionary zu erstellen, das jeden Namen auf seine Länge abbildet. Speichere das Dictionary in `name_lengths` und evaluiere es.

Editor wird geladen…
Hinweis anzeigen

Die Syntax lautet {name: len(name) for name in names}.

Lösung nach 3 Versuchen verfügbar