Python Datencontainer
Willemers Informatik-Ecke
Python stellt für die Kombination von Daten einige Container zur Verfügung. Sie ermöglichen die Kombination von Daten in Listen, aber auch in assoziativen Datenstrukturen, bei denen die Daten über einen Schlüssel ermittelt werden.

Sequenz

Eine Sequenz ist eine Kombination von Elementen gleichen Typs, die über rechteckige Klammern ausgelesen werden können. Eine Sequenz ist immutable, als unveränderlich. Es können also nach der Erzeugung keine einzelnen Elemente mehr geändert werden.

Sequenzoperationen

Neben der Unveränderlichkeit haben die Sequenztypen auch einige Operationen gemein.

Die Erläuterungen für den Umgang mit den rechteckigen Klammern finden Sie bei den Zeichenketten.

Tupel

Ausgelagert

Liste

Ausgelagert

Dictionaries

Ein Dictionary ermöglicht es, über einen Schlüsselbegriff nach Elementen zu suchen. Ein Dictionary wird mit geschweiften Klammern umgeben. Darin befindet sich eine durch Kommata getrennte Folge von Schlüsseln und Werten, die selbst wiederum durch einen Doppelpunkt getrennt sind. Ein naheliegendes Beispiel ist die Suche eines Kreises anhand des Autokennzeichens. Ein solches Nachschlagewerk würde folgendermaßen in Python realisiert:
kreis = {"SL":"Schleswig", "FL":"Flensburg","HG":"Bad Homburg"}
print(kreis["FL"])
Der Aufruf von print() würde in diesem Beispiel Flensburg liefern. Um ein Dictionary komplett auszulesen, kann wieder der Befehl for verwendet werden.
for i in kreis:
    print(i, kreis[i])
Wie man sieht, erhält die Laufvariable von for dabei den Schlüsselwert, über den dann aber leicht das Element zugegriffen werden kann.

Operationen auf dem Dictionary

Mit der Funktion items() wird aus dem Dictionary eine Liste von Tupeln aus Schlüsseln und Wert gebildet.
kreis = {"SL":"Schleswig", "FL":"Flensburg","HG":"Bad Homburg"}
liste = kreis.items()
print(liste)
Die Ausgabe ergibt folgendes:
[('FL', 'Flensburg'), ('HG', 'Bad Homburg'), ('SL', 'Schleswig')]
Die Funktion keys() liefert eine Liste aller Schlüssel eines Dictionarys.
kreis = {"SL":"Schleswig", "FL":"Flensburg","HG":"Bad Homburg"}
liste = kreis.keys()
print(liste)
Die Ausgabe ergibt folgendes:
['FL', 'HG', 'SL']
Analog liefert die Funktion values() eine Liste der Werte.

Mengen: set und frozenset

Mit set und frozenset bildet Python eine Menge nach. Eine Menge ist unsortiert. Jedes Element darf nur einmal enthalten sein. Während set veränderlich ist, ist frozenset, wie der Name schon vermuten lässt, unveränderbar. Eine leere Menge wird durch Initialisierung mit der Funktion set() erzeugt.
meineMenge = set() 
Ein Set kann durch eine Liste initialisiert werden. Das gleiche gilt für frozenset. Die Liste wird als Parameter übergeben.
meineMenge = set([1,12,34,38,39,40]) 
meineFesteMenge = frozenset([1,12,34,38,39,40]) 
Wird statt einer Liste eine Zeichenkette für die Initialisierung verwendet, enthält der Set die einzelnen Buchstaben der Zeichenkette. Dubletten werden dabei aussortiert, da eine Menge ja keine doppelten Elemente erlaubt.
>>> set("Hallihallo")
set(['a', 'i', 'H', 'l', 'o', 'h'])
Wenn Sie ein Dictionary für die Initialsierung einer Menge verwenden, enthält diese anschließend die Schlüssel.
>>> kreis = {"SL":"Schleswig", "FL":"Flensburg","HG":"Bad Homburg"}
>>> print(set(kreis))
set(['FL', 'HG', 'SL'])
>>>

Elemente und Mengen

Nach der Initialisierung kann einem set noch Elemente hinzugefügt oder entfernt werden. Die folgenden Funktionen stehen zur Verfügung:

Verknüpfung von Mengen

Die bekannten Operationen aus der Mengenleere lassen sich auch mit Python-Mengen ausführen.

Zwei Mengen können durch das Kleiner- und Größerzeichen verglichen werden. Dabei prüft der Ausdruck m1<m2, ob m1 eine echte Teilmenge von m2 ist. Der Gleichheitsoperator prüft, ob die Mengen die gleichen Elemente haben. Daraus ergibt sich dann logisch die Funktion der anderen Vergleichsoperatoren.

Der senkrechte Strich bewirkt das Erzeugen einer Vereinigungsmenge zweier Mengen. Die Ergebnismenge enthält also alle Elemente, die in mindestens einer der beiden Mengen enthalten sind.

vereinigung = menge | nochnemenge
Mit dem kaufmännischen Und, auch Ampersand genannt, erzeugen Sie die Schnittmenge zweier Mengen. Die Ergebnismenge enthält also alle nur Elemente, die in beiden Mengen enthalten sind.
schnitt = menge & nochnemenge
Das Minuszeichen erzeugt eine Differenzmenge aus zwei Mengen. Die erzeugte Menge enthält alle Elemente der ersten Menge, außer denen, die auch in der zweiten Menge enthalten sind.
diff = menge - nochnemenge
Mit dem Dachoperator wird die symetrische Differenz der Mengen erzeugt. Sie enthält nur die Elemente, die in genau einer der beiden Mengen vorhanden ist, also nicht in beiden.
symdiff = menge ^ nochnemenge

Operator Funktion
menge = erst <= zweit menge = erst.issubset(zweit)
menge = erst >= zweit menge = erst.issuperset(zweit)
menge = erst | zweit menge = erst.union(zweit)
menge = erst & zweit menge = erst.intersection(zweit)
menge = erst - zweit menge = erst.difference(zweit)
menge = erst ^ zweit menge = erst.symmetric_difference(zweit)
menge |= andere menge.update(andere)
menge &= andere menge.intersection_update(andere)
menge -= andere menge.difference_update(andere)
menge ^= andere menge.symmetric_difference_update(andere)

Wie bei allen Containern führt eine Zuweisung dazu, dass eine Referenz entsteht. Wird eine Kopie benötigt, wird die Memberfunktion copy() aufgerufen.