Das Modul collections der Standardbibliothek enthält Datentypen und Funktionen, die auf den komplexeren
Basisdatentypen aufbauen und diese für bestimmte Einsatzzwecke besser nutzbar machen.
| Funktionen bzw. Datentyp | Beschreibung |
| ChainMap | Eine Verkettung von Dictionarys. |
| Counter | Ein Dictionary zum Erfassen von Häufigkeiten. |
| defaultdict | Ein Dictionary, das einen Standardwert für nicht enthaltene Sclüssel unterstützt. |
| deque | Eine doppelt verkettete Liste. |
| namedtuple | Eine Funktion zur Erzeugung benannter Tupel. |
| OrderedDict | Ein Dictionary, das die Reihenfolge, in der die Schlüssel-Wert-Paare eingefügt wurden, beim Iterieren beibehält. |
Das Modul muss mit import collections eingebunden werden.
Der Datentyp ChainMap ermöglicht es, auf mehrere Dictionarys gleichzeitig so zuzugreifen, als wäre
ihr Inhalt in einem Dictionary zusammengefasst. Dabei werden die Dictionarys verkettet. Bei einem
Zugriff wird stets der zugeordnete Wert des ersten Dictionarys zurückgegeben, das den angegebenen
Schlüssel enthält.
dict1, dict2
alle_dict = collections.ChainMap(dict1, dict2)
wert = alle_dict[schlüssel]
Oft ist man an der Häufigkeitsverteilung der Elemente eines iterierbaren Objekts interessiert.
Der Datentyp Counter des Moduls collections ist ein Dictionary, das bei einem Zugriff mit einem
unbekannten Schlüssel k automatisch ein Schlüssel-Wert-Paar k : 0 hinzufügt. Lieen die Daten bereits
in Form eines iterierbaren Objekts vor, so können diese bei der Instanziierung von Counter übergeben werden.
Beispiel: collections.Counter("Dies ist ein Text")
Diese Methode gibt einen Iterator über die Elemente einer Counter-Instanz zurück.
Dabei wird jedes Element so oft durchlufen, wie sein aktueller Zählerstand ist.
Diese Methode gibt eine Liste der n häufigsten Elemente zurück. Die Liste besteht dabei aus Tupeln, die
das jeweilige Element und dessen Häufigkeit enthalten. Wenn der Parameter n nicht angegeben wird, enthält die
zurückgegebene Liste alle Elemente.
Diese Methode subtrahiert die Häufigkeit der Elemente von iterable-or-mapping von der Häufigkeit in d.
Diese Methode addiert die Häufigkeit der Elemente von iterable-or-mapping zu der Häufigkeit in d.
Der Datentyp defaultdict ist eine Verallgemeinerung des Datentyps Counter. Bei einer Counter-Instanz
wird beim Zugriff auf einen nicht vorhandenen Schlüssel k automatisch das Schlüssel-Wert-Paar {k : 0}
zum Dictionary hinzugefügt. Eine defaultdict-Instanz fügt in diesem Fall das Schlüssel-Wert-Paar {k : x()}
hinzu, wobei x für einen beliebigen Datentyp steht.
Der Datentyp deque (für double-ended queue) des Moduls collections implementiert eine doppelt
verkettete Liste, die das effiziente Einfügen von Elementen am Anfang oder am Ende unterstützt.
Neben den Methoden append, copy, count, extend, index, insert, pop, remove und reverse
sowie den Operatoren + und *, die vom Basidatentyp list her bekannt sind, verfügt der Datentyp
deque noch über folgende Methoden:
| Methode | Beschreibung |
| appendleft(x) | Fügt das Element x am Anfang der Liste ein. |
| clear() | Leert die Liste. |
| extendleft(iterable) | Fügt die Elemente aus iterable am Anfang der Liste ein. |
| popleft() | Gibt das erste Element zurück und entfernt es aus der Liste. |
| rotate(n) | Rotiert die Liste um n Elemente. Das bedeutet, dass die letzten n Elemente der Liste gelöscht und in umgekehrter Reihenfolge am Anfang eingefügt werden. |
Darüber hinaus ist es möglich, bei der Instanziierung einer doppelt verketteten Liste eine Maximallänge
festzulegen. Wenn in ener maximal langen Liste ein Element auf einer Seite angefügt wird, wird das
letzte Element auf der anderen Seite entfernt.
d = deque([1, 2, 3, 4], maxlen = 4)
Viele Funktionen der Standardbibliothek geben ihr Ergebnis in Form eines benannten Tupels zurück.
Das ist ein Tupel, dessen Felder jeweils einen Namen tragen. Auf die Werte des Tupels kann über
die Feldnamen zugegriffen werden.
Ein benanntes Tupel kann mithilfe der Funktion namedtuple des Moduls collections erzeugt werden.
Die Funktion namedtuple erzeugt einen neuen, vom Basisdatentyp tuple abgeleiteten Datentyp mit dem
Namen typename. Über den Parameter field_names werden die Namen der Elemente des Tupels
festgelegt. Die Feldnamen sind nach der Erzeugung des Datentyps in dem statischen Attribut _fields
gespeichert.
Buch = collections.namedtuple("Buch", ["titel", "autor", "seitenzahl", "ISBN"])
Bei der Instanziierung eines benannten Tupels müssen Werte für alle Felder des Tupels angegeben werden.
Der Datentyp OrderedDict implementiert ein Dictionary, das die Reihenfolge der Schlüssel
garantiert beibehält.
d = collections.OrderedDict([("c", 1), ("b", 2), ("a", 3)])
Der Datentyp OrderedDict stellt zusätzlich zur Funktionalität eines normalen Dictionarys folgende
Methoden bereit:
Diese Methode entfernt das letzte Schlüssel-Wert-Paar aus dem Dictionary und gibt es zurück. Wird für den Parameter
last der Wert False übergeben, wird das erste Schlüssel-Wert-Paar entfernt und zurückgegeben.
Die Methode move_to_end verschiebt das Schlüssel-Wert-Paar mit dem Schlüssel key ans Ende bzw. an den
Anfang des Dictionarys.