Dictionaries¶
Dictionaries sind Wörterbücher, in denen miteinander verknüpfte Informationen gespeichert werden können.
Da in Dictionaries eine nahezu unendliche Menge an Informationen beinhalten können muss man diese auch durchlaufen können.
Mit Hilfe von Dictionaries können Sie viele reale Objekte genauer abbilden. Beispielsweise können Sie ein Dictionary für eine Person anlegen und darin beliebig viele Informationen über diese Person speichern, z.B. Name, Alter, Wohnort, Beruf und andere Merkmale.
Dabei speichern Sie immer zwei zusammengehörige Informationen, also z. B. Wörter und deren Bedeutung.
Einfaches Dictionary¶
Stellen Sie sich ein Spiel vor, in dem es außerirdische Raumschiffe in verschiedenen Farben und mit verschiedenen Punktwerten gibt. Die Informationen über ein Schiff können Sie dann in einem einfachen Dictionary speichern:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
{'color': 'green', 'points': 5}
Ein Dictionary ist eine Sammlung von Schlüssel-Wert-Paaren. Dabei ist mit jedem Schlüssel ein Wert verknüpft, sodass Sie über den Schlüssel auf den zugehörigen Wert zugreifen können. Der Wert eines Schlüssels kann eine Zahl, ein String, eine Liste und sogar ein weiteres Dictionary sein. Jedes Objekt, das Sie in Python erstellen können, lässt sich als Wert in einem Dictionary verwenden.
Zugriff auf die Werte in einem Dictionary¶
Um auf den zugehörigen Wert zu einem Schlüssel zuzugreifen, geben Sie den Namen des Dictionaries und dahinter in eckigen Klammern den Schlüssel an:
alien_0 = {'color': 'green'}
print(alien_0['color'])
green
Mit der get()-Funktion auf Werte zugreifen¶
Wenn Sie Schlüssel in eckigen Klammern verwenden, um Werte aus einem Dictionary abzurufen, kann das zu einem Problem führen. Denn wenn der angegebene Schlüssel nicht existiert, erhalten Sie eine Fehlermeldung.
Beispiel mit Fehlermeldung:
alien_0 = {'color': 'green', 'speed': 'slow'}
print(alien_0['points'])
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(alien_0['points'])
KeyError: 'points' # Gibt ein Traceback für einen Schlüsselfehler: KeyError: 'points'
Um den Fehler zu verweiden, können wir die Methode get() verwenden. Sie verlangt als erstes Argument den Schlüssel, der nachgeschlagen werden soll. Optional können Sie als zweites Argument aber einen Wert nennen, der zurückgegeben werden soll, wenn es diesen Schlüssel nicht gibt.
alien_0 = {'color': 'green', 'speed': 'slow'}
point_value = alien_0.get('points', 'No point value assigned.')
print(point_value)
No point value assigned
Wenn Sie beim Aufruf von get() das zweite Argument weglassen und der Schlüssel nicht existiert, gibt Python None zurück, was bedeutet: »Der Wert existiert nicht.«
Schlüssel-Wert-Paare hinzufügen¶
Dictionaries sind dynamische Strukturen, denen Sie jederzeit neue Schlüssel-Wert-Paare hinzufügen können. Dazu geben Sie den Namen des Dictionaries gefolgt von dem neuen Schlüssel in eckigen Klammern und den neuen Wert an.
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
Bemerkung
Ab Python 3.7 behalten die Einträge von Dictionaries die Reihenfolge bei, in der sie definiert wurden.
Wenn Sie ein Dictionary ausgeben oder in einer Schleife durchlaufen, erscheinen seine Elemente in derselben Reihenfolge, in der sie zu dem Dictionary hinzugefügt wurden.
Werte in einem Dictionary ändern¶
Werte ändern über Angabe des Namens in Klammer und den neuen Wert mittels dem Zuweisungsoperator zuweisen.
alien_0 = {'color': 'green', 'points': 5}
alien_0['color'] = 'yellow'
# Schlüssel-Wert-Paare entfernen
# Entfernen geht mittels der Anweisung del.
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green'}
Dictionaries mittels einer Schleife durchlaufen¶
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print(f"Key: {key}")
print(f"Value: {value}")
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
Alle Schlüssel in einem Dictionary durchlaufen¶
Die Methode keys() kommt zum Einsatz, wenn Sie nur an den Schlüsseln in einem Dictionary interessiert sind.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
Jen
Sarah
Edward P
hil
Das Standardverhalten beim Durchlaufen eines Dictionaries besteht darin, nur die Schlüssel abzuarbeiten. Daher hätte man statt:
for name in favorite_languages.keys():
auch einfach Folgendes schreiben können:
for name in favorite_languages:
Mit der Methode keys() können Sie auch herausfinden, ob ein bestimmter Schlüssel vorhanden ist. Im folgenden Beispiel ermitteln wir, ob Erin an der Umfrage teilgenommen hat:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
Erin, please take our poll!
Alle Werte in einem Dictionary durchlaufen¶
Mit der Methode values() können Sie eine Liste aller Werte in einem Dictionary ohne Nennung der Schlüssel erstellen.
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
The following languages have been mentioned:
Python
C
Ruby
Python