Dictionaries#

Ein Dictionary ist ein weiterer Datentyp in Python, der es ermöglicht strukturierte Daten darzustellen. Übersetzt heißt Dictionary Wörterbuch. Dieser Funktion ähnlich ermöglichen Dictionaries es, Objektpaare abzubilden.

Syntax#

Die Objektpaare bestehen jeweils aus einem Key (Schlüssel) und einem Value (Wert).

Mit dem Schlüssel kann man auf den Wert zugreifen.

Beispiele#

# Deutsch - Englisch WÖrterbuch
woerterbuch = {'Baum': 'tree', 'Haus': 'house', 'Auto': 'car'} 

print(woerterbuch)
type(woerterbuch)
{'Baum': 'tree', 'Haus': 'house', 'Auto': 'car'}
dict
woerterbuch['Haus']
'house'
# Städte und ihre Einwohner:innen
städte_einwohner = {"Berlin": 3_669_491,
                    "Hamburg": 1_847_253,
                    "München": 1_484_226,
                    "Köln": 1_087_863,
                    "Frankfurt am Main": 763_380,
                    "Stuttgart": 635_911,
                    "Düsseldorf": 621_877,
                    "Leipzig": 593_145,
                    "Dortmund": 588_250,
                    "Essen": 582_760,
                    "Bremen": 567_559,
                    "Dresden": 556_780,
                    "Hannover": 536_925,
                    "Nürnberg": 518_370}
städte_einwohner['Dresden']
556780

Schlüssel prüfen#

Der Zugriff auf einen nicht vorhandene Schlüssel ergibt einen KeyError:

städte_einwohner["Konstanz"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[5], line 1
----> 1 städte_einwohner["Konstanz"]

KeyError: 'Konstanz'
Um das zu verhindern kann mit `in` oder `not in` die Existenz eines Schlüssels in einem Dictionary überprüft werden
# in
'Konstanz' in städte_einwohner
False
if 'Konstanz' not in städte_einwohner:
    print('Konstanz nicht in Dictionary')
else:
    print(städte_einwohner['Konstanz'])
Konstanz nicht in Dictionary

Leeres Dictionary erstellen#

Es gib zwei Möglichkeiten ein leeres Dictionary zu erstellen:

# Leeres Dictionary
empty_dict = {}
type(empty_dict)
dict
# Leeres Dictionary
empty_dict = dict()
type(empty_dict)
dict

Hinzufügen / Überschreiben der Schlüssel-Objekt Paare#

Schlüssel-Objekt Paare können mit dem folgenden Aufruf überschrieben oder neu hinzugefügt werden:

# Definition des Wörterbuchs
woerterbuch = {} 
print(woerterbuch)

# Hinzufügen eines weiteren Eintrags
woerterbuch['Tisch'] = 'table'
print(woerterbuch)
{}
{'Tisch': 'table'}
# Definition des Wörterbuchs
woerterbuch = {'Baum': 'tree', 'Haus': 'Huse', 'Auto': 'car'} 
print(woerterbuch)

# Korrektur eines Eintrags
woerterbuch['Haus'] = 'house'
print(woerterbuch)
{'Baum': 'tree', 'Haus': 'Huse', 'Auto': 'car'}
{'Baum': 'tree', 'Haus': 'house', 'Auto': 'car'}

Schlüssel-Objekt Paar löschen#

Mit del <dict>[<key>] wird der key und der zugehörige value aus dem Dictionary gelöscht.

# Definition des Wörterbuchs
woerterbuch = {'Baum': 'tree', 'Haus': 'house', 'Auto': 'car'} 
print(woerterbuch)

# Löschen eines Eintrags
del woerterbuch['Baum']
print(woerterbuch)
{'Baum': 'tree', 'Haus': 'house', 'Auto': 'car'}
{'Haus': 'house', 'Auto': 'car'}

Ohne key wird das gesamte Dictionary gelöscht.

# Löschen des dictionaries
del woerterbuch
print(woerterbuch)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In [20], line 3
      1 # Löschen des dictionaries
      2 del woerterbuch
----> 3 print(woerterbuch)

NameError: name 'woerterbuch' is not defined

Durch Dictionaries iterieren#

Um auf alle Einträge eines Dictionaries nacheinander zuzugreifen kann durch Dictionaries iteriert werden.

städte_einwohner = {"Berlin": 3_669_491,
                    "Hamburg": 1_847_253,
                    "München": 1_484_226,
                    "Köln": 1_087_863,
                    "Frankfurt am Main": 763_380}
In Berlin wohnen 3669491 Menschen.
In Hamburg wohnen 1847253 Menschen.
In München wohnen 1484226 Menschen.
In Köln wohnen 1087863 Menschen.
In Frankfurt am Main wohnen 763380 Menschen.
# Möglichkeit 1
for stadt in städte_einwohner:
    einwohner = städte_einwohner[stadt
    print(f'In {stadt} wohnen {einwohner} Menschen.')
# Möglichkeit 2
for stadt, einwohner in städte_einwohner.items():
    print(f'In {stadt} wohnen {einwohner} Menschen.')
In Berlin wohnen 3669491 Menschen.
In Hamburg wohnen 1847253 Menschen.
In München wohnen 1484226 Menschen.
In Köln wohnen 1087863 Menschen.
In Frankfurt am Main wohnen 763380 Menschen.

Dictionary Methoden#

Die folgenden Methoden sind für Dictionaries verfügbar:

Methode

Beschreibung

.clear()

Löscht alle Einträge des Dictionarys

.copy()

Erstellt eine Kopie

.fromkeys()

Erstellt eine Kopie aus den Schlüsseln eines Dictionary

.get()

Liest einen Wert zu einem übergebenen Schlüssel aus

.items()

Gibt alles Schlüssel und Werte aus

.keys()

Zeit die Schlüssel eines Dictionary an

.pop()

löscht den Eintrag aus dem Dictionary des übergebenen Schlüssels und liefert dessen Inhalt als Rückgabewert

.popitem()

Liefert einen Eintrag als Tupel zurück und löscht den Eintrag aus dem Dictionary (im Gegensatz zu pop() muss kein Schlüssel übergeben werden)

.setdefault()

liefert den Wert eines Eintrags aus dem Dictionary, wenn der Schlüssel vorhanden ist. Ist kein entsprechender Schlüssel vorhanden, wird ein Schlüssel mit dem Wert im Dictionary gespeichert

.update()

Aktualisiert einen Wert, wenn der Schlüssel vorhanden ist. Wenn noch kein entsprechender Schlüssel vorhanden ist, wird Wert und Schlüssel eingetragen

.values()

Liefert alle Werte des Dictionary zurück (ohne Schlüssel)