Namedtuples in Python

Um Tuples ging es bereits in einem älteren Blogbeitrag, jetzt folgen die Namedtuples. Werfen wir aber zuvor einen Blick zurück und schauen uns folgendes Tuple-Beispiel an:

>>> hessen = ("Wiesbaden", 278342)

Bei „hessen“ handelt es sich um ein Tuple, wie sich mit type beweisen lässt:

>>> type(hessen)
<class 'tuple'>

Die Elemente dieses Tuples könnten den Variablen capitol und population zugewiesen werden (tuple unpacking):

>>> capitol, population = hessen
>>> print(f"Hauptstadt von Hessen: {capital}")
Hauptstadt von Hessen: Wiesbaden

Wie sieht dies nun bei Verwendung eines namedtuple aus? Zunächst muss dieser Typ vom Modul collections importiert werden:

from collections import namedtuple

Dann könnte ein neuer Datentyp „Hessen“ wie folgt erstellt werden:

Hessen = namedtuple("Hessen", ["capital", "population"])

Wie Ihr sehen könnt, wird innerhalb der geschweiften Klammern zunächst der Name angegeben, danach folgen die Bezeichnungen der enthaltenen Elemente (hier: capitol und population). Jetzt lässt sich ein Namedtuple-Objekt erzeugen:

>>> hessen = Hessen("Wiesbaden", 6_295_017)
>>> print(hessen.capital)
Wiesbaden
>>> print(hessen.population)
6295017

Auf ein Element kann auch über den Index zugegriffen werden:

>>> print(hessen[0])
Wiesbaden

Und selbstverständlich funktioniert auch das Unpacking:

>>> capitol, population = hessen
>>> print(capital)
Wiesbaden
>>> print(population)
6295017

Außerdem haben Namedtuple von Haus aus eine string representation an Bord, so dass sich die Werte ausgeben lassen:

>>> hessen
Hessen(capital='Wiesbaden', population=6295017)