Dictionary Comprehension in Python

Dies ist der zweite Artikel zum Thema Comprehensions in Python. Ging es im ersten Teil um List Comprehensions, werden in diesem Tutorial Dictionary Comprehensions (auch: Dict Comprehensions) erklärt.

Wie auch bei den List Comprehensions geht es hier darum, ein neues Dictionary zu erstellen. Im folgenden Beispiel soll ein Dictionary erzeugt werden, dass als Schlüssel eine Zahl (von 1 bis 10) und als Wert die Quadrate dieser Zahlen enthält. Dafür kommt der Exponentiationsoperator ** zum Einsatz. Der Ausdruck x**2 bedeutet, dass die Variable x mit sich selbst potenziert wird. Die Zahlen 1 bis 10 werden mit der Funktion range() erzeugt, die als Parameter einen Mindest- und einen Maximalwert enthält (1, 11).

squares = {x: x**2 for x in range(1, 11)}
print(squares)

Das Ergebnis ist folgendes Dictionary:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

Eine Dict Comprehension ist einer List Comprehension sehr ähnlich. Es gibt aber einen wesentlichen Unterschied: bei einer Dict Comprehension werden geschweifte Klammern verwendet.

Wie bei einer List Comprehension kann auch hier eine Bedingung hinzugefügt werden. Im zweiten Beispiel liegt eine Liste mit vier String-Elementen vor:

towns: = ["Manchester", "Liverpool", "Bristol", "Blackpool"]

Es soll ein Dictionary erstellt werden, das als Schlüssel die String-Länge, also die Anzahl der Buchstaben, und als Wert den Städtenamen enthält. Allerdings sollen lediglich Städte Berücksichtigt werden, die mit dem Buchstaben „B“ beginnen. In Code gegossen sieht dies wie folgt aus:

towns_dict = {a: len(a) for a in towns if a[0] == "B"}

print(towns_dict)
{'Bristol': 7, 'Blackpool': 9}

`

Weiterführende Links