Du liest:
Das Python Dictionary (mit Codebeispielen)

Das Python Dictionary (mit Codebeispielen)

von Pero
19.06.2020
Das Python Dictionary

Python ist eine Hochsprache in der Programmiertechnik, die vor allem für ihre einfache Lesbarkeit, einfache Syntax und die umfangreiche Bibliotheksunterstützung und Sammlungen bekannt ist.
Eine Sammlung in Python ist eine Art Container/Box, die von uns zum Speichern von Daten verwendet werden kann. Es gibt vier verschiedene Sammlungen in Python (List, Set, Tuple und das Python Dictionary). Jede dieser Sammlungen hat seine eigenen Eigenschaften und Verwendungszwecke. Während die ersten drei sich relativ wenig unterscheiden, weißt das Dictionary einen größeren Unterschied auf.

Ein Dictionary speichert alle Daten immer als Schlüssel-Wert-Paar ab. Dies ist ähnlich zu den Objekten in JavaScript. Aufgrund seiner Eigenschaften verwenden wir das Python Dictionary relativ oft. Deshalb werden wir in diesem Artikel über das Dictionary sprechen.

Was ist ein Dictionary?

Ganz einfach gesprochen ist das Dictionary eine Sammlung für Daten in Python. Die Daten werden dabei immer als Schlüssel-Werte-Paar gespeichert. Der Mechanismus ist also so gestrickt, dass wir für jeden Wert immer einen Schlüssel haben.

Ein Schlüssel ist in einem Dictionary immer eindeutig, während der Wert unter verschiedenen Schlüsseln auch der gleich sein kann. Darüber hinaus können Werte von jedem Datentyp sein.

Der Unterschied zwischen dem Dictionary und anderen Sammlungen?

Neben dem Dictionary könnten wir auch eins der drei anderen Sammlungen nutzen: List, Set, Tuple. Lasst uns deshalb einmal den Unterschied zwischen den drei Erwähnten und dem Dictionary betrachten.

Die List erlaubt unter anderem doppelte Einträge, während wir, wie bereits besprochen, bei einem Dictionary keine doppelten Schlüssel nutzen dürfen. Allerdings können wir Werte mehrfach nutzen.

Während das Dictionary veränderbar ist, erlaubt das Tupel keine Änderungen nach dem Erstellen.

Ein Set erlaubt, wie auch das Dictionary, keine doppelten Schlüssel/Einträge und ist zudem nicht über den Schlüssel, wie wir ihn in einem Dictionary vorfinden, adressierbar.

Wie erstellt man ein Python Dictionary?

Jede Sammlung in Python wird mit geschweiften Klammern initialisiert. Für das Dictionary können wir zwei Möglichkeiten nutzen, um dieses zu initialisieren. Die ersten kann wie folgt erfolgen:

dict_1 = {}

Mit „dict_1“ haben wir jetzt ein leeres Dictionary, da es kein Schlüssel-Wert-Paar enthält.
Wir können allerdings auch direkt mit einem Schlüssel-Wert-Paar initialisieren.

dict_1 = { "name" : "Mike" }

Wenn wir uns den Quellcode anschauen, dann haben wir jetzt als Schlüssel „name“ und als entsprechenden Wert dazu haben wir „Mike“. Jetzt können wir aber nicht nur ein Paar einfügen, sondern auch mehrere Paare, die jeweils mit einem Komma getrennt werden.

dict_1 = { "name" : "Mike", "alter" : 25, "jobStatus" : False }

Jetzt haben wir neben dem Namen auch noch das „Alter“ und den „JobStatus“ hinzugefügt. Wenn wir genau hinschauen, sehen wir, dass wir für die drei Schlüssel, jeweils andere Datentypen verwenden.

  1. „name“ ist vom Typ String.
  2. „alter“ ist vom Typ Integer (Nummer).
  3. „jobStatus“ ist vom Typ Boolean.

Lasst uns jetzt einmal das Dictionary ausgeben, um das Format zu sehen.

Beispielsausgabe des zuvor erstellten Dictionaries

In einem Dictionary kann grundsätzlich jeder Datentyp gespeichert werden, dabei müssen wir aber beachten, dass die Schlüssel immer Strings sein müssen. Daneben gibt es allerdings auch noch eine weitere Methode, um ein Dictionary zu erstellen:

dict_1 = dict()

Mit „dict_1“ haben wir jetzt wieder ein leeres Dictionary. Den Typ des Objekts können wir übrigens mit der eingebauten Python type() Funktion herausfinden.

Typen eines Dictionaries ermitteln mit der type Funktion.

Die Ausgabe „<class `dict‘>“ zeigt uns an, dass es sich um ein Dictionary handelt. Genauso wie zuvor, können wir auch gleich ein Schlüssel-Wert-Paar hinzufügen:

dict_1 = dict( "name" = "Mike")

Wie im obigen Quellcode, können wir es auch wie folgt schreiben:

dict_1 = { name : "Mike" }

Für uns sieht der obige Quellcode zwar ähnlich zum Vorherigen aus, allerdings setzten wir bei Verwendung des Konstruktors die Schlüssel nicht mehr in Anführungszeichen und verwenden statt dem Gleichzeichen einen Doppelpunkt.

Wollen wir „dict_1“ mit mehreren Schlüsseln initialisieren, machen wir das wie folgt:

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
Konsolenausgabe des vorherigen Codebeispiels

Auf die Werte eines Dictionaries zugreifen

Da wir nun die Initialisierung des Dictionary abgeschlossen haben, können wir uns anschauen, wie wir auf die Werte zugreifen können. Wie wir bereits wissen, sind die gespeicherten Werte immer einem Schlüssel zugeordnet. Um auf die Werte zugreifen zu wollen, müssen wir einfach den Schlüssel eingeben.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1["name"]

Der schnellste Weg, wie wir an die Werte kommen, geschieht über die eckigen Klammern, in die der Schlüssel geschrieben wird.

Zugriff auf die Werte eines Dictionaries mit Hilfe des Schlüssels.
dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1["ort"]

Wenn das Schlüsselwort nicht existiert, werden wir einen Fehler erhalten:

Fehlermeldung: Schlüssel nicht im Dictionary vorhanden

Neben unserer verwendeten Methode, gibt es auch eine eingebaute Methode get(), um an die Werte zu gelangen. Die get()-Methode haben wir ja bereits in vorherigen Kapiteln behandelt. Wir übergeben der Funktion einfach unser Schlüsselwort als Argument:

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1.get("name")

Angewendet, auf unser Dictionary, ergibt sich dann Folgendes:

Ausgabe der Werte eines Dictionaries mit der get-Methode.

Beide dieser Methoden mögen ähnlich aussehen, aber die get()-Methode bietet einige Vorteile.

Vorhin haben wir besprochen, was passiert, wenn wir auf einen nicht existierenden Schlüssel aus einem Dictionary zugegriffen wollen. Es wird ein Fehler zurückgegeben. Aber mit der get()-Methode wird in solchen Fällen kein Fehler zurückgegeben, stattdessen wird „None“(Nichts) zurückgegeben, selbst wenn der Schlüssel nicht existiert.

dict_1.get("ort")

Der Schlüssel „ort“ befindet sich wieder nicht im Dictionary:

Ausgabe von None bei nicht vorhanden des Schlüssels.

Wenn „None“ zurückgegeben wird, sehen wir logischerweise nichts.

Wir können allerdings auch einen Standardwert setzen, der ausgegeben wird, wenn die herkömmliche Funktion nicht funktioniert.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1.get("ort", "New York")

Wenn das Schlüsselwort nicht existiert, dann wird das zweite Argument ausgegeben:

Falls der Schlüsselt nicht existiert, wird durch das zweite Argument eine Vorgabe gemacht.

Wie wir sehen wird jetzt das zweite Argument zurückgegeben.
So haben wir die zwei verschiedenen Varianten der get()-Methode kennen gelernt, um einen möglichst effizienten und fehlerfreien Code zu erstellen.

Prüfen ob ein Schlüssel existiert

Mit der get()-Methode müssen wir uns keine Gedanken darüber machen, ob ein Schlüssel tatsächlich existiert. Entweder werden wir „None“ erhalten, oder den Wert des Schlüssels, wenn dieser existiert. Aber es gibt auch einen Weg, den wir nutzen können, um heraus zu finden ob ein Schlüssel existiert. Wir nutzen dafür den „in“ Operator.

Den Operator können wir auf verschiedene Weise in Python nutzen. Er wird übrigens auch bei List, Tuple und Set verwendet und gibt im Regelfall einen Boolean zurück.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
"name" in dict_1

Die zweite Zeile wird „True“ zurückgeben, weil der Schlüssel „name“ im Dictionary existiert.

Prüfung ob name in dem Python Dictionary dict_1 vorhanden ist.
dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
"ort" in dict_1

Jetzt lasst uns folgenden Quellcode anschauen:

Rückgabe von False, da Schlüssel nicht in dict_1 vorhanden.

Dieses Mal wird „False“ zurückgegeben, da sich „ort“ nicht als Schlüssel im Dictionary befindet.

Das Python Dictionary anpassen

Wir das Dictionary ganz einfach anpassen, indem wir wieder unsere Schlüssel nutzen. Zuvor haben wir bereits die eckigen Klammern genutzt, um auf unsere Werte zuzugreifen. Das können wir auch jetzt wieder machen, um die Werte innerhalb des Dictionaries zu modifizieren.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)

Wir nutzen das Gleichzeichen, um dem Schlüssel einen Wert zuzuweisen.

Werte eines Dictionaries mit Hilfe der eckigen Klammern modifzieren.

Der Wert des Schlüssels „name“ wurde ganz einfach angepasst.

Wenn der von uns angegeben Schlüssel nicht existiert, wird einfach ein neues Schlüssel-Wert-Paar in das Dictionary eingefügt.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1["ort"] = "New York"
Wert nicht in dem Python Dictionary vorhanden, daher automatisch hinzugefügt.

Jetzt haben wir versucht, Wert des Schlüssels „ort“ zu ändern. Da dieser aber nicht existierte, wurde er einfach mit hinzugefügt.

Python besitzt aber auch hierfür eine eingebaute Funktion mit dem Namen update(), die diese Aufgabe übernehmen kann.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1.update({"name" : "John"})

Wenn wir die Funktion update() auf unserem Dictionary aufrufen, müssen wir nur darauf achten, das Schlüssel-Wert-Paar in geschweiften Klammern zu schreiben.

DIe update-Funktion in Kombination mit einem Python Dictionary.

Genauso wie bei den eckigen Klammern, wird bei Fehlen des Schlüssels auch hier das Paar neu hinzugefügt.

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1.update({"ort" : "New York"})
Wert wird automatisch dem Python Dictionary hinzugefügt, wenn es nicht zuvor schon vorhanden ist.

Wir können genauso gut auch mehrere Argumente bzw. Paare der Funktion übergeben. Das sieht dann wie folgt aus:

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
dict_1.update({"name" : "John", "alter" : 30, "ort" : "New York"})

Im Quellcode haben wir insgesamt drei Schlüssel, die wir ändern wollen. Die beiden die existieren („name“,“alter“) werden wie gelernt im Wert angepasst. Der „ort“ existiert noch nicht und wird deshalb einfach hinzugefügt.

update-Funktion mit mehreren Werten.

Wir haben jetzt also nicht nur gelernt wie wir Werte anpassen können, sondern auch, wie wir neue Werte bzw. Schlüssel hinzufügen können.

Wie entfernt man Paare aus einem Dictionary?

Wir haben jetzt gelernt, wie wir ein Dictionary erstellen, adressieren und anpassen können. Jetzt schauen wir uns noch an, wie wir existierende Elemente wieder löschen können.

In Python können wir dafür das Schlüsselwort del nutzen:

dict_1 = dict( name = "Mike", alter = 25, jobStatus = False)
del dict_1["alter"]

Wir nutzen das besprochene Schlüsselwort del und hängen einfach mit eckigen Klammern den zu löschenden Schlüssel an.

del-Funktion bei einem Python Dictionary

Durch ein Python Dictionary iterieren

Beim Programmieren nutzen wir Schleifen, um Objekte abzuschreiten. Die am meisten Verwendete ist die for-Schleife. Um mit dieser unser Dictionary abschreiten zu können, nutzen wir erneut den in Operator und die eigebauten Funktionen keys() und values().

Um alle Schlüssel zu erhalten, machen wir folgendes:

for schluessel in dict_1:
	print(schluessel)

Mit der for-Schleife erhalten wir alle Schlüssel.

Alle Schlüssel eines Dictionaries mit einer for-Schleife erhalten.

Wir können auch folgenden Quellcode nutzen:

for schluessel in dict_1.keys():
	print(schluessel)
Alle Werte ausgeben lassen

Die Werte der einzelnen Schlüssel erhalten wir wie folgt:

Alle Werte und Schlüssel eines Python Dictionaries erhalten.

Zusammenfassung

Das Dictionary in Python ist bei weitem kein einfaches Thema. Es wird einfach anders verwendet, als die anderen Möglichkeiten. In diesem Artikel haben wir deshalb herausgefunden, was das Dictionary von den anderen Sammlungen unterscheidet. Dazu haben wir auch gelernt, wie wir ein Dictionary erstellen können und es anschließend nach unserem Belieben bearbeiten können. Auch wissen wir jetzt, wie wir ein Dictionary abschreiten können, uns also alle Schlüssel oder Werte ausgeben lassen können. Dafür haben wir neben dem „in“ Operator auch die eingebauten Funktionen keys() und values() genutzt.



Bislang gibt es keine Kommentare. Markier dein Revier und sei der Erste!

Schreibe einen Kommentar

Das könnte dich auch interessieren