Python Tutorial
- jetzt Python programmieren lernen

Datentyp Dictionary – Wörterbücher in Python

Der Datentyp Dictionary (dt. Wörterbuch bzw. assoziative Liste) ermöglicht ein Aufbau ähnlich einer Liste aber als Indizes mit Begriffen. Der Begriff Dictionary

ist wirklich mit dem dafür deutschen Wort Wörterbuch am besten verständlich.

Schauen wir uns den Aufbau anhand einer deutsch-englisch Wörterbuches an.

Wir wollen Zahlen in beiden Sprachen erhalten:

null = zero
eins = one
zwei = two
drei = three

Als Dictionary in Python sieht erstellt wird im ersten Schritt ein leeres „Wörterbuch“ erstellt – an den geschweiften Klammern zu sehen. Wir nennen es deutschenglich

deutschenglisch = {}

Jetzt füllen wir das Dictionary mit Inhalt:

deutschenglisch = {}
deutschenglisch['null'] = 'zero'
deutschenglisch['eins'] = 'one'
deutschenglisch['zwei'] = 'two'
deutschenglisch['drei'] = 'three'

Und wie üblich können wir den Inhalt ausgeben über

deutschenglisch

Als Rückmeldung erhalten wir den kompletten Inhalt des dictionary

>>> deutschenglisch

{'null': 'zero', 'eins': 'one', 'zwei': 'two', 'drei': 'three'}

Diese folgende Variante ist auch eine andere Möglichkeit, ein „dictionary“ aufzubauen:

deutschitalienisch = {'eins': 'uno', 'zwei': 'due', 'drei': 'tre'}

Wollen wir ein bestimmtes Element der assoziativen Liste erhalten, geben wir das gewünschte einfach mit dem „Klartext-Index“ an.

>>> deutschenglisch['zwei']
'two'

Löschen von Elementen - Aktion auf das dictionary

Wollen wir ein Element, sprich Schlüssel-Wert Paar aus unserem Wörterbuch löschen, können wir dies direkt mit der Anweisung del und dem entsprechenden Index tun:

del deutschenglisch['zwei']

Nun fehlt dieses Element in unserem dictionary

>>> deutschenglisch

{'null': 'zero', 'eins': 'one', 'drei': 'three'}

Aber Vorsicht mit del!

Wird kein Index (Schlüssel-Wert Paar) angegeben, wird das komplette dictionary gelöscht!

del deutschenglisch

Das kann also ins Auge gehen:

>>> del deutschenglisch

>>> deutschenglisch

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name 'deutschenglisch' is not defined

Dictionary Methoden – Python stellt verschiedene Methoden bereit

>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

values()

Über die Methode values() werden alle Werte des dictionary zurückgeliefert. Aus unserem vorherigen Wörterbuchbeispiel wäre das dann:

deutschitalienisch.values()

Ergebnis:

>>> deutschitalienisch.values()

dict_values(['uno', 'due', 'tre'])

keys()

Über die Methode keys() werden alle Schlüssel des dictionary zurückgeliefert. Aus unserem vorherigen Wörterbuchbeispiel wäre das dann:

deutschitalienisch.keys()

Als Ergebnis dann:

>>> deutschitalienisch.keys()

dict_keys(['eins', 'zwei', 'drei'])

items()

Über die Methode items() werden alle Elemente des dictionary zurückgeliefert. Aus unserem vorherigen Wörterbuchbeispiel wäre das dann:

deutschitalienisch.items()

Ergebnis:

>>> deutschitalienisch.items()

dict_items([('eins', 'uno'), ('zwei', 'due'), ('drei', 'tre')])

Die Feinheiten der Rückgabe:

  • eckige Klammern zeigen, dass es sich eine Liste handelt
  • runde Klammern zeigen, dass es sich um Tupel handelt

clear()

Alle Elemente werden aus dem dictionary gelöscht. Im Unterschied zum vorherig gezeigten del besteht weiterhin ein dictionary mit seinem Namen, dass allerdings keinen Inhalt hat.

deutschitalienisch.clear()

copy()

Legt eine Kopie des dictonary an.

woerterbuch = deutschitalienisch.copy()

Nun steckt der Inhalt auch in dem neuen „dictionary“, dass aber diesen Inhalt so behält auch wenn das Original verändert wird. Hier liegt der Unterschied zu einem Aliasnamen (siehe weiter unten).

>>> woerterbuch = deutschitalienisch.copy()

>>> woerterbuch

{'eins': 'uno', 'zwei': 'due', 'drei': 'tre'}

Wird mit Aliasnamen gearbeitet (und nicht mit Kopien) verändert sich der Inhalt, egal ob man mit dem Alias oder dem originalen Namen zugreift!

neuernamen = deutschitalienisch
deutschitalienisch['vier'] = 'quattro'
neuernamen['vier']

Wir erhalten als Aushabe dann „quattro“. Die Änderungen gelten für alle Aktion, egal ob Elemente dazukommen oder entfernt werden.