decocode decocode deco    

Dictionaries in Python #

► Python-Dokumentation: Mapping Types

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

Quelltext auswählen
1
2
3
4
5
6
7
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.

Quelltext auswählen
1
2
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
# Schlüssel ausgeben
for e in a:
    print(e)

# 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:

Quelltext auswählen
1
2
3
4
5
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
if "Vorname" in a:
    print("\"Vorname\" ist enthalten.")
else:
    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:

Quelltext auswählen
1
2
3
a = {"Vorname":"Hans", "Nachname":"Meier", "Alter":34, "Verheiratet":True}
a['Ort'] = "Buxtehude"
print(a)

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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
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.

Quelltext auswählen
1
2
3
4
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
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:

Quelltext auswählen
1
2
3
4
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.

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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.

Quelltext auswählen
1
2
3
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.

Quelltext auswählen
1
2
a = {10:"Hans", 20:"Meier", 30:34, 40:True}
print(sum(a))