0Pricing
Python Academy · Lektion

NamedTuple-Grundlagen

Leichtgewichtige unveränderliche Datensätze erstellen

NamedTuple-Grundlagen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein NamedTuple?

Ein benanntes Tupel ist ein Tupel, dessen Positionen zusätzlich Namen besitzen. Sie erhalten die kompakte, unveränderliche Struktur eines Tupels und zugleich einen lesbaren Zugriff über Attribute. Das eignet sich hervorragend für kleine Datensätze.

Das Problem mit einfachen Tupeln

Einfache Tupel sind positionsbasiert. Sie müssen sich daher merken, welche Bedeutung jeder Index hat. Code wie p[0] und p[1] kann leicht zu Fehlern führen.

point = (1, 2)
print(point[0])  # x?
print(point[1])  # y?

Erstellen mit namedtuple

Die Factory collections.namedtuple erstellt eine neue Tupel-Unterklasse. Übergeben Sie den Typnamen und die Feldnamen.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)

Zugriff über den Namen

Nun können Sie Felder über ihren Namen statt über ihren Index lesen, wodurch der Code selbsterklärend wird.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)

Es bleibt ein Tupel

Ein benanntes Tupel ist weiterhin ein echtes Tupel. Daher funktionieren Indizierung, Entpacken und Iteration wie gewohnt.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)

Unveränderlichkeit

Wie alle Tupel sind auch benannte Tupel unveränderlich. Der Versuch, ein Feld zuzuweisen, löst AttributeError aus.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
    p.x = 99
except AttributeError as e:
    print('Cannot modify:', e)

Eine veränderte Kopie erstellen

Da Sie es nicht verändern können, verwenden Sie die Methode _replace(), um eine neue Instanz mit geänderten Feldern zu erzeugen.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)

In ein Wörterbuch umwandeln

Die Methode _asdict() gibt die Felder als Wörterbuch zurück, was für die Serialisierung oder Protokollierung nützlich ist.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())

Felder untersuchen

Das Attribut _fields listet die Feldnamen auf. Das ist praktisch für generischen Code, der über die Felder eines Datensatzes iteriert.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)

Standardwerte

Geben Sie mit dem Argument defaults Standardwerte an. Die Standardwerte gelten für die am weitesten rechts stehenden Felder, genau wie Standardwerte von Funktionsparametern.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))

Mehrere Werte zurückgeben

Benannte Tupel eignen sich hervorragend als Rückgabewerte von Funktionen. Geben Sie statt eines namenlosen Tupels ein benanntes Tupel zurück, damit Aufrufer auf die Felder über ihren Namen zugreifen können.

from collections import namedtuple

Stats = namedtuple('Stats', ['minimum', 'maximum'])

def analyze(nums):
    return Stats(min(nums), max(nums))

r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)

Kurzer Test

Wie erstellen Sie eine veränderte Kopie einer NamedTuple-Instanz?

Zusammenfassung

Sie haben gelernt, kompakte unveränderliche Datensätze zu erstellen.

  • namedtuple ergänzt Tupel um Feldnamen.
  • Greifen Sie über den Namen oder den Index auf Felder zu; Entpacken funktioniert weiterhin.
  • Verwenden Sie _replace() für veränderte Kopien und _asdict() zum Umwandeln.
  • _fields listet die Namen auf; defaults legt Standardwerte fest.

Häufig gestellte Fragen

Ist die Lektion „NamedTuple-Grundlagen“ kostenlos?

Ja — der vollständige Text von „NamedTuple-Grundlagen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „NamedTuple-Grundlagen“?

Leichtgewichtige unveränderliche Datensätze erstellen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „NamedTuple-Grundlagen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Die Enum-Klasse
  2. IntEnum und Flag
  3. NamedTuple-Grundlagen
  4. typing.NamedTuple
← Zurück zu Python Academy