Sebastian Schmid bio photo

Sebastian Schmid

Student der angewandten Informatik an der HTW Berlin.
Interessen sind Linux, Latex und Python.

Github Stackoverflow

Flat is better than nested.

Häufig findet man bei der Arbeit mit Daten verschachtelte Datenstrukturen wie die Folgende.

lst = [ {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}, {'k1': 'v4', 'k2': 'v5', 'k3': 'v6'} ]

Möchte man jetzt an alle Werte der Keys “k1” kommen, könnte man sich über umständliche Schleifenkonstrukte hangeln um die Werte aus der Datenstruktur zu extrahieren.

for dct in lst:
	for key, val in dct.items():
		if key == 'k1':
			print(val)

Das ist aber zum einen umständlich und zum anderen wird dadurch die Lesbarkeit des Codes verschlechtert. Das macht das Programm weniger leicht wart- und verstehbar.

Über List Comprehensions lässt sich der komplizierte Ausdruck aber sehr einfach darstellen.

for val in [dct.get('k1') for dct in lst]:
	print(val)

Innerhalb der List Comprehension wird hier noch die Mathode get() aufgerufen. Diese extrahiert den Wert eines bestimmten Keys eines Dictionaries. In diesem Fall ‘k1’.