Python-Sammlungsmodul: Erweiterte Containertypen
Erfahren Sie, wie Sie das Sammlungsmodul von Python verwenden. Master Counter, Defaultdict, NamedTuple, Deque und wie man komplexe Datenstrukturen vereinfacht.
Übersicht
Während die grundlegenden Container von Python – Listen, Wörterbücher, Mengen und Tupel – für die meisten Aufgaben ausreichen, erfordern komplexe Programme häufig spezielle Datenstrukturen. Um dieses Problem zu beheben, stellt Python das integrierte Modul „Sammlungen“ bereit. Dieses Modul enthält leistungsstarke Container-Datentypen, die darauf ausgelegt sind, gängige Programmieraufgaben effizienter und mit einer saubereren, selbstdokumentierenden Syntax zu lösen.
Zu den nützlichsten Klassen gehört „defaultdict“, das sich wie ein normales Wörterbuch verhält, fehlende Schlüssel jedoch automatisch mit einem Standardwert (wie einer leeren Liste oder einer Ganzzahl Null) initialisiert, wodurch ausführliche Schlüsselprüfungen überflüssig werden. Ein weiteres Kraftpaket ist die Klasse „Counter“, die speziell für die Zählung des Vorkommens von Elementen in einem Iterable optimiert ist. Für schnelle Warteschlangen und Stapel bietet „deque“ (doppelendige Warteschlange) „O(1)“-Einfügungen und Löschungen an beiden Enden, im Gegensatz zu Listen, die unter „O(N)“-Verschiebungen leiden.
Schließlich bietet das Modul „namedtuple“, das leichte, tupelartige Objekte erstellt, auf die sowohl mit Punktnotation als auch mit herkömmlichen Indizes zugegriffen werden kann (z. B. „point.x“ anstelle von „point[0]“). Dadurch erhalten Sie die Geschwindigkeit und Unveränderlichkeit eines Tupels mit der Lesbarkeit einer Klasse. Durch die Integration des Sammlungsmoduls in Ihren Workflow wird sichergestellt, dass Ihr Code elegant, leistungsfähig und sauber bleibt.
Code- und Ausführungsausgabe
Zählen Sie Wörter mit Counter und organisieren Sie Wörterbuchgruppen mit defaultdict.
from collections import Counter, defaultdict, namedtuple
# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")
# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")
# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20Schrittweise Umsetzung
- Analysieren Sie Protokolldateien, um Fehlerereignisse mithilfe eines Zählers zu zählen
- Erstellen von Prioritätswarteschlangen oder Aufgabenplanern mithilfe von Deque
- Darstellung von Koordinatendimensionen oder Datensätzen mithilfe eines benannten Tupels
Häufig gestellte Fragen
Warum ist deque für Warteschlangenoperationen schneller als list?
Eine Liste erfordert das Verschieben aller nachfolgenden Elemente im Speicher, wenn sie von vorne eingefügt oder gelöscht werden (O(N)). Eine Deque wird als doppelt verknüpfte Liste implementiert, die O(1)-Operationen an beiden Enden ermöglicht.
Kann ich Elemente eines benannten Tupels ändern?
Nein. Da benannte Tupel von Standardtupeln erben, sind sie vollständig unveränderlich. Sie müssen die Methode ._replace() verwenden, um eine neue geänderte Instanz zurückzugeben.
Verwandte Themen
Erfahren Sie alles über Python-Listen. Erfahren Sie, wie Sie Arrays in Python nativ erstellen, segmentieren, ändern und durchlaufen.
Python-WörterbücherMeister-Python-Wörterbücher. Erfahren Sie, wie Sie Schlüssel-Wert-Paardaten speichern, abrufen und verarbeiten. Verstehen Sie die Leistung und Best Practices für Zuordnungen.
Python ItertoolsLernen Sie das itertools-Modul von Python kennen. Beherrschen Sie unendliche Iteratoren, Kombinationen, Permutationen, Gruppierungen und speichereffiziente Datenverarbeitung.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
So sortieren Sie eine Liste in Python
Erfahren Sie, wie Sie eine Liste in Python mit der Methode sort() und der Funktion sorted() sortieren. Entdecken Sie Beispiele für benutzerdefinierte Schlüsselsortierung und umgekehrte Reihenfolge.
Spickzettel für Python-String-Methoden
Ein vollständiges Referenzhandbuch für die Python-String-Manipulation. Meistern Sie das Formatieren, Suchen, Teilen, Ersetzen und Überprüfen von Zeichenfolgeneigenschaften.
Python vs. JavaScript: Welche Programmiersprache ist die beste?
Ein umfassender Vergleich zwischen Python und JavaScript. Entdecken Sie Syntaxunterschiede, Leistung, Anwendungsfälle (Backend vs. Frontend) und Codierungsbeispiele.