16 Collections
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. Tabelle 16.1 listet den Inhalt des collections-Moduls auf.
Funktion bzw. Datentyp | Beschreibung | Abschnitt |
---|---|---|
ChainMap | eine Verkettung von Dictionarys | 16.1 |
Counter | ein Dictionary zum Erfassen von Häufigkeiten | 16.2 |
defaultdict | ein Dictionary, das einen Standardwert für nicht enthaltene Schlüssel unterstützt | 16.3 |
deque | eine doppelt verkettete Liste | 16.4 |
namedtuple | eine Funktion zur Erzeugung benannter Tupel | 16.5 |
OrderedDict | ein Dictionary, das die Reihenfolge, in der die Schlüssel-Wert-Paare eingefügt wurden, beim Iterieren beibehält | 16.6 |
Um das Modul collections verwenden zu können, muss es zunächst eingebunden werden:
>>> import collections
16.1 Verkettete Dictionarys
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. Das bedeutet, dass bei einem Zugriff stets der zugeordnete Wert des ersten Dictionarys zurückgegeben wird, das den angegebenen Schlüssel enthält.
Eine ChainMap kann dann verwendet werden, wenn Daten auf verschiedene Dictionarys aufgeteilt sind:
>>> gruppe_a = {
... "Brasilien" : 7,
... "Mexiko" : 7,
... "Kroatien" : 3,
... "Kamerun" : 0
... }
>>> gruppe_g = {
... "Deutschland" : 7,
... "USA" : 4,
... "Portugal" : 4,
... "Ghana" : 1
... }
Mithilfe einer ChainMap lässt sich in einer einzigen Anfrage die Punktzahl einer Mannschaft herausfinden, unabhängig davon, in welcher Gruppe sie spielt:
>>> gruppen = collections.ChainMap(gruppe_a, gruppe_g)
>>> gruppen["Brasilien"]
7
>>> gruppen["Deutschland"]
7
Wäre Deutschland in diesem Beispiel in beiden Gruppen angetreten, würde stets die Punktzahl aus der zuerst angegebenen Gruppe, im Beispiel Gruppe A, zurückgegeben.