Python Academy · Lektion

namedtuple und OrderedDict

Weitere praktische Collections

Lektion 4 von 413 Schritte

namedtuple und OrderedDict ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Zwei weitere praktische Collections

Das Modul collections enthält namedtuple für gut lesbare Tupel mit Datensatzstruktur und OrderedDict für Dictionaries mit zusätzlichen Methoden zur Verwaltung der Reihenfolge.

Importieren Sie sie mit from collections import namedtuple, OrderedDict.

from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)

namedtuple definieren

namedtuple(name, fields) erstellt eine neue Tupel-Unterklasse. Sie übergeben den Typnamen und eine Liste von Feldnamen. Das Ergebnis ist eine Klasse, die Sie instanziieren können.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)

Zugriff über Namen

Der große Vorteil: Sie lesen Felder über ihren Namen statt über kryptische Indexnummern aus, wodurch der Code deutlich lesbarer wird.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)

Weiterhin ein Tupel

Ein namedtuple ist ein echtes Tupel, daher funktionieren Indizierung, Entpacken und Iteration weiterhin.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)

Unveränderlich, aber ersetzbar

Wie alle Tupel sind namedtuples unveränderlich. Verwenden Sie ._replace(), um eine geänderte Kopie zu erhalten; die Methode gibt eine neue Instanz zurück.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)

In ein dict umwandeln

._asdict() wandelt ein namedtuple in ein gewöhnliches Dictionary um, das Feldnamen auf Werte abbildet.

from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())

Standardwerte

Geben Sie beim Definieren eines namedtuple defaults an. Die Standardwerte gelten für die Felder ganz rechts, sodass Sie diese beim Erstellen von Instanzen weglassen können.

from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))

Felder untersuchen

Das Attribut ._fields listet die Feldnamen auf und ist nützlich für Introspektion oder zum Erstellen von generischem Code.

from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)

Grundlagen von OrderedDict

OrderedDict merkt sich die Einfügereihenfolge. Seit Python 3.7 behalten auch normale Dictionaries ihre Reihenfolge bei, aber OrderedDict bietet zusätzliche Methoden zur Reihenfolgeverwaltung, die Ihnen sonst nicht zur Verfügung stehen.

from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)

move_to_end

.move_to_end(key) verschiebt einen Schlüssel ans Ende oder mit last=False an den Anfang. Das ist einzigartig bei OrderedDict und praktisch für eine Logik im LRU-Stil.

from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))

Reihenfolgeabhängige Gleichheit

Zwei OrderedDict-Objekte sind nur dann gleich, wenn ihre Elemente in derselben Reihenfolge angeordnet sind. Gewöhnliche Dictionaries ignorieren die Reihenfolge bei Vergleichen.

from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))

Kurzer Test

Wie erstellen Sie eine geänderte Kopie eines namedtuple, da es unveränderlich ist?

Zusammenfassung: namedtuple und OrderedDict

Zusammenfassung:

  • namedtuple(name, fields) erstellt gut lesbare, unveränderliche Datensätze mit Zugriff über Namen.
  • Verwenden Sie ._replace() für geänderte Kopien und ._asdict(), um in ein Dictionary umzuwandeln.
  • OrderedDict behält die Einfügereihenfolge bei und ergänzt .move_to_end().
  • Bei OrderedDict berücksichtigt die Gleichheit die Reihenfolge, bei einem gewöhnlichen Dictionary dagegen nicht.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())
Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
76
Lektionen
320

Häufig gestellte Fragen

Ist die Lektion „namedtuple und OrderedDict“ kostenlos?

Ja — der vollständige Text von „namedtuple und OrderedDict“ 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 und OrderedDict“?

Weitere praktische Collections 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 4 von 4.

Wie lange dauert die Lektion „namedtuple und OrderedDict“?

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. Counter
  2. defaultdict
  3. deque
  4. namedtuple und OrderedDict
← Zurück zu Python Academy