Bitte warten...

Python: Dictionarys

► Python-Dokumentation: Mapping Types

Dictionarys sind assoziative Feldvariablen (Arrays), die eine Gruppe von Schlüssel/Wert-Paaren speichern können. Dictionarys werden von geschweiften Klammern {} umschlossen. Die einzelnen Elemente eines Dictionarys werden statt über einen numerischen Index über den entsprechenden Schlüssel angesprochen.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
print(a)
print(a["Nachname"])
print(type(a))
print(type(a["Nachname"]))
a["Alter"] = 35
print(a)

Anzahl der Elemente bestimmen

Die Anzahl der Elemente eines Dictionarys lässt sich wie bei Strings, Listen und Tupeln mit der Funktion len() ermitteln.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
print(len(a))

Schlüssel und Werte eines Dictionarys ausgeben

► Python-Dokumentation: for

Mit for/in (s. Schleifen) können alle Schlüssel eines Dictionarys ausgegeben werden. Die Reihenfolge der Schlüssel ist dabei willkürlich.

In ähnlicher Weise können auch die Werte des Dictionarys ausgegeben werden.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
# Schlüssel ausgeben
for e in a:
    print(e)

# Schlüssel und Werte ausgeben
for e in a:
    print(e, str(a[e]))

Vorkommen eines Schlüssels ermitteln

► Python-Dokumentation: if

Mit if/in (s. Bedingungen) kann geprüft werden, ob ein bestimmter Schlüssel in dem Dictionary existiert:

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
if "Vorname" in a:
    print("\"Vorname\" ist enthalten.")
else:  # gleichbedeutend mit: if "Vorname" not in a
    print("\"Vorname\" ist nicht enthalten.")

Element(e) zu einem Dictionary hinzufügen

► Python-Dokumentation: Mapping Types

In ähnlicher Weise, wie der Wert eines Schlüssels geändert werden kann, kann auch ein neues Schlüssel/Wert-Paar dem Dictionary hinzugefügt werden, wenn der angegebene Schlüssel nicht bereits existiert. Mit der Methode update können zwei Dictionarys verknüpft werden.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
a['Ort'] = "Buxtehude"
print(a)

b = {"Straße":"Hafenstraße", "Hausnummer":42, "PLZ":"21614", "Ort":"Buxtehude"}
a.update(b)

Element(e) aus einem Dictionary entfernen

► Python-Dokumentation: Mapping Types

Mit del wird das Element mit dem angegebenen Schlüssel aus einem Dictionary entfernt.

Mit pop() kann der Wert eines Schlüssels aus einem Dictionary extrahiert werden, wobei das Schlüssel/Wert-Paar anschließend aus dem Dictionary entfernt wird.

Um ein Dictionary zu leeren, ohne es dabei zu löschen, wird die Funktion clear() verwendet.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
del a["Verheiratet"]
print(a)

x = a.pop("Alter")
print(x)
print(a)

a.clear()
print(a)

Dictionary aktualisieren

► Python-Dokumentation: Mapping Types

Mit update() kann ein Dictionary um ein anderes Dictionary ergänzt werden. Bei diesem Vorgang werden die Werte übereinstimmender Schlüssel geändert und nicht vorhandene Schlüssel/Wert-Paare hinzugefügt.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
b = {"Nachname":"Lehmann", "Ort":"Buxtehude"}
a.update(b)
print(a)

View der Elemente erzeugen

► Python-Dokumentation: Mapping Types

Mit items() kann ein so genannter View eines Dictionarys erzeugt werden. Der View enthält eine Liste, deren Elemente Tupel aus Schlüssel und Werten des Dictionarys sind. Über diese Liste kann mit einer Schleife iteriert werden. Mit if/in kann das Vorhandensein eines Schlüssel/Wert-Paares geprüft werden.

Ändert sich das dem View zugrunde liegende Dictionary, so ändert sich der View ebenfalls automatisch.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
i = a.items()

for e in i:
    print(e)

if ("Alter", 34) in i:
    print("Alter:34 ist enthalten.")
else:
    print("Alter:34 ist nicht enthalten.")

a["Alter"] = 35
print(i)

View der Schlüssel erzeugen

► Python-Dokumentation: Mapping Types

Mit keys() kann ein View der Schlüssel eines Dictionarys erzeugt werden. Der View enthält eine Liste, deren Elemente die Schlüssel des Dictionarys sind. Über diese Liste kann mit einer Schleife iteriert werden. Mit if/in kann das Vorhandensein eines Schlüssels geprüft werden.

Ändert sich das dem View zugrunde liegende Dictionary, so ändert sich der View ebenfalls automatisch.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
i = a.keys()

for e in i:
    print(e)

if ("Alter") in i:
    print("\"Alter\" ist enthalten.")
else:
    print("\"Alter\" ist nicht enthalten.")

a["Ort"] = "Buxtehude"
print(i)

View der Werte erzeugen

► Python-Dokumentation: Mapping Types

Mit values() kann ein View der Werte eines Dictionarys erzeugt werden. Der View enthält eine Liste, deren Elemente die Werte des Dictionarys sind. Über diese Liste kann mit einer Schleife iteriert werden. Mit if/in kann das Vorhandensein eines Wertes geprüft werden.

Ändert sich das dem View zugrunde liegende Dictionary, so ändert sich der View ebenfalls automatisch.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
i = a.values()

for e in i:
    print(e)

if ("Meier") in i:
    print("\"Meier\" ist enthalten.")
else:
    print("\"Meier\" ist nicht enthalten.")

a["Ort"] = "Buxtehude"
print(i)

Dictionarys vergleichen

► Python-Dokumentation: Mapping Types

Mit dem Operator == können zwei Dictionarys mit einander verglichen werden. Hierbei ist zu beachten, dass die Reihenfolge der Elemente des Dictionarys unerheblich ist. Lediglich die einzelnen Schlüssel/Wert-Paare werden verglichen.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
b = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":False}
c = {"Alter":34, "Nachname":"Meier", "Verheiratet":True, "Vorname":"Hans"}

if a == b:
    print("a gleich b.")
else:
    print("a ungleich b.")

if a == c:
    print("a gleich c.")
else:
    print("a ungleich c.")

Dictionary kopieren

Während durch den Operator = bei numerischen Variablen und Strings eine eigenständige Kopie einer Variable mit neuem Namen erzeugt wird, erzeugt der Operator bei Listen, Tupeln und Dictionarys lediglich eine Instanz. Das bedeutet, dass der Wert der Instanz sich auch dann ändert, wenn das ursprüngliche Objekt geändert wird. Dies wird durch folgendes Beispiel veranschaulicht:

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
b = a
a["Vorname"] = "Paula"
print(b)

► Python-Dokumentation: copy

Um eine eigenständige Kopie eines Dictionarys zu erzeugen, kann die Methode deepcopy aus dem Modul copy verwendet werden. Hierbei werden auch bei enthaltenen Elementen, die selbst Listen, Tupel oder Dictionarys sind, Kopien und keine Instanzen erzeugt.

Code kopieren
import copy

x = ["Schach", "Kochen", "Tanzen"]
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True, "Hobbys":x}
b = copy.deepcopy(a)
a["Vorname"] = "Paula"
x[0] = "Halma"
print(b)

# alterative Methode (erzeugt aber keine Kopie der in a enthaltenen Liste x, sondern eine Instanz):
x = ["Schach", "Kochen", "Tanzen"]
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True, "Hobbys":x}
b = {}
k = a.keys()
for e in k:
    b[e] = a[e]
a["Vorname"] = "Paula"
x[0] = "Halma"
print(b)

Kleinsten bzw. größten Schlüssel finden

► Python-Dokumentation: min max

Mit Hilfe der Funktionen min() bzw. max() ist es möglich, innerhalb eines Dictionarys den Schlüssel mit der niedrigsten bzw. höchsten Position bei alphabetischer Sortierung zu ermitteln.

Code kopieren
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
print(min(a))
print(max(a))

Schlüssel addieren

► Python-Dokumentation: sum

Mit Hilfe der Funktion sum() können die einzelnen Schlüssel eines Dictionarys addiert werden, sofern es sich bei ihnen um Zahlen handelt. Ansonsten erzeugt diese Funktion einen TypeError.

Code kopieren
a = {10:"Hans", 20:"Meier", 30:34, 40:True}
print(sum(a))