collections.namedtuple in Python

Um Tuples ging es bereits in einem älteren Blogbeitrag. Nun folgt der Datentyp namedtuple aus dem Modul collections.

Dieser Data Class Builder ist seit Version 2.6 Bestandteil von Python. Er ist nicht zu verwechseln mit NamedTuple aus dem Modul typing, der in Python 3.6 eingeführt wurde.

Als Ausgangspunkt soll folgendes Tuple-Beispiel dienen:

>>> 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)

Zuletzt aktualisiert am 11. November 2022