Verständnis von Wörterbüchern in Python 3

Einführung

Das Wörterbuch ist ein integrierter Mapping-Typ in Python. Wörterbücher ordnen Schlüssel den Werten zu, und diese Schlüssel-Wert-Paare bieten eine nützliche Möglichkeit, Daten in Python zu speichern.

Typischerweise werden sie verwendet, um zusammengehörige Daten zu halten, wie die Informationen in einer ID oder einem Benutzerprofil. Wörterbücher werden mit geschweiften Klammern auf beiden Seiten konstruiert: { }.

Information: Um den Beispielcode in diesem Tutorial zu verfolgen, öffnen Sie eine Python-Interaktionsschale auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der Eingabeaufforderung >>> hinzufügen.

A dictionary looks like this:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

Zusätzlich zu den geschweiften Klammern gibt es auch Doppelpunkte (:) im gesamten Wörterbuch.

Die Wörter links von den Doppelpunkten sind die Schlüssel. Schlüssel können aus jedem unveränderlichen Datentyp bestehen. Die Schlüssel im obigen Wörterbuch sind:

  • 'Benutzername'
  • 'online'
  • 'Anhänger'

Jeder der Schlüssel im obigen Beispiel sind Zeichenketten Werte.

Die Wörter rechts von den Doppelpunkten sind die Werte. Werte können aus jedem Datentyp bestehen. Die Werte im obigen Wörterbuch sind:

  • 'sammy-hai'
  • Wahr
  • 987

Jeder dieser Werte ist entweder ein String, ein Boolean oder eine Ganzzahl.

Lassen Sie uns das Wörterbuch sammy ausgeben:

print(sammy)
Output
{'username': 'sammy-shark', 'followers': 987, 'online': True}

Beim Betrachten der Ausgabe kann sich die Reihenfolge der Schlüssel-Wert-Paare verschoben haben. In Python Version 3.5 und früher ist der Datentyp des Wörterbuchs ungeordnet. Ab Python Version 3.6 bleibt der Datentyp des Wörterbuchs jedoch geordnet. Unabhängig davon, ob das Wörterbuch geordnet ist oder nicht, bleiben die Schlüssel-Wert-Paare intakt, sodass wir auf Daten basierend auf ihrer relationalen Bedeutung zugreifen können.

Voraussetzungen

Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie sich auf die Installations- und Einrichtungshandbücher für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server beziehen, die für Ihr Betriebssystem geeignet ist (Ubuntu, CentOS, Debian usw.).

Zugriff auf Wörterbuchelemente

Wir können die Werte eines Wörterbuchs aufrufen, indem wir die zugehörigen Schlüssel referenzieren.

Zugriff auf Datenelemente mit Schlüsseln

Weil Wörterbücher Schlüssel-Wert-Paare zum Speichern von Daten anbieten, können sie wichtige Elemente in Ihrem Python-Programm sein.

Wenn wir den Benutzernamen von Sammy isolieren möchten, können wir dies tun, indem wir sammy['username'] aufrufen. Lassen Sie uns das ausdrucken:

print(sammy['username'])
Output
sammy-shark

Wörterbücher verhalten sich ähnlich wie eine Datenbank, indem Sie anstelle eines ganzen Zahl, um einen bestimmten Indexwert abzurufen, wie Sie es mit einer Liste tun würden, einem Schlüssel einen Wert zuweisen und diesen Schlüssel aufrufen können, um seinen zugehörigen Wert zu erhalten.

Indem wir den Schlüssel 'username' aufrufen, erhalten wir den Wert dieses Schlüssels, der 'sammy-shark' ist.

Die verbleibenden Werte im Wörterbuch sammy können auf ähnliche Weise im selben Format aufgerufen werden:

sammy['followers']
# Gibt 987 zurück

sammy['online']
# Gibt True zurück

Indem wir die Schlüssel-Wert-Paare der Wörterbücher verwenden, können wir Schlüssel referenzieren, um Werte abzurufen.

Verwendung von Methoden zum Zugriff auf Elemente

Zusätzlich zur Verwendung von Schlüsseln zum Zugriff auf Werte können wir auch mit einigen integrierten Methoden arbeiten:

  • dict.keys() isoliert Schlüssel
  • dict.values() isoliert Werte
  • dict.items() gibt Elemente in einer Listenformat von (Schlüssel, Wert)-Tupelpaaren zurück

Um die Schlüssel zurückzugeben, würden wir die Methode dict.keys() verwenden. In unserem Beispiel würde das den Variablennamen verwenden und sammy.keys() sein. Lassen Sie uns das an eine print()-Methode übergeben und uns die Ausgabe ansehen:

print(sammy.keys())
Output
dict_keys(['followers', 'username', 'online'])

Wir erhalten eine Ausgabe, die die Schlüssel innerhalb eines iterierbaren Ansichtsobjekts der Klasse dict_keys platziert. Die Schlüssel werden dann im Listenformat gedruckt.

Diese Methode kann verwendet werden, um über Dictionaries abzufragen. Zum Beispiel können wir uns die gemeinsamen Schlüssel zwischen zwei Wörterbuchdatenstrukturen ansehen:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

for common_key in sammy.keys() & jesse.keys():
    print(sammy[common_key], jesse[common_key])

Das Wörterbuch sammy und das Wörterbuch jesse sind jeweils ein Benutzerprofil-Wörterbuch.

Ihre Profile haben jedoch unterschiedliche Schlüssel, da Sammy ein soziales Profil mit zugehörigen Followern hat und Jesse ein Spielerprofil mit zugehörigen Punkten hat. Die 2 Schlüssel, die sie gemeinsam haben, sind Benutzername und online-Status, die wir finden können, wenn wir dieses kleine Programm ausführen:

Output
sammy-shark JOctopus True False

Wir könnten das Programm sicherlich verbessern, um die Ausgabe benutzerfreundlicher zu gestalten, aber dies zeigt, dass dict.keys() verwendet werden kann, um über verschiedene Wörterbücher zu prüfen, was sie gemeinsam haben oder nicht. Dies ist besonders nützlich für große Wörterbücher.

Ähnlich können wir die Methode dict.values() verwenden, um die Werte im sammy-Wörterbuch abzufragen, das wie sammy.values() aufgebaut wäre. Lass uns die ausdrucken:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

print(sammy.values())
Output
dict_values([True, 'sammy-shark', 987])

Sowohl die Methoden keys() als auch values() geben unsortierte Listen der Schlüssel und Werte zurück, die im sammy-Wörterbuch mit den Ansichtsobjekten von dict_keys bzw. dict_values vorhanden sind.

Wenn wir an allen Elementen in einem Wörterbuch interessiert sind, können wir mit der Methode items() darauf zugreifen:

print(sammy.items())
Output
dict_items([('online', True), ('username', 'sammy-shark'), ('followers', 987)])

Das zurückgegebene Format davon ist eine Liste, die aus (Schlüssel, Wert)-Tupelpaaren mit dem Ansichtsobjekt dict_items besteht.

Wir können über das zurückgegebene Listenformat mit einer for-Schleife iterieren. Zum Beispiel können wir jeden der Schlüssel und Werte eines bestimmten Wörterbuchs ausdrucken und ihn dann durch Hinzufügen eines Strings menschenlesbarer machen:

for key, value in sammy.items():
    print(key, 'is the key for the value', value)
Output
online is the key for the value True followers is the key for the value 987 username is the key for the value sammy-shark

Die obige for-Schleife iterierte über die Elemente innerhalb des sammy-Wörterbuchs und druckte die Schlüssel und Werte Zeile für Zeile aus, mit Informationen, um sie für Menschen einfacher verständlich zu machen.

Wir können integrierte Methoden verwenden, um Elemente, Werte und Schlüssel aus Wörterbuchdatenstrukturen abzurufen.

Ändern von Wörterbüchern

Wörterbücher sind eine veränderbare Datenstruktur, sodass Sie sie ändern können. In diesem Abschnitt werden wir das Hinzufügen und Löschen von Wörterbuchelementen besprechen.

Hinzufügen und Ändern von Wörterbucheinträgen

Ohne die Verwendung einer Methode oder Funktion können Sie Schlüssel-Wert-Paare zu Wörterbüchern hinzufügen, indem Sie die folgende Syntax verwenden:

dict[key] = value

Wir werden uns ansehen, wie dies in der Praxis funktioniert, indem wir ein Schlüssel-Wert-Paar zu einem Wörterbuch mit dem Namen Benutzernamen hinzufügen:

usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

usernames['Drew'] = 'squidly'

print(usernames)
Output
{'Drew': 'squidly', 'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

Wir sehen nun, dass das Wörterbuch um das Schlüssel-Wert-Paar 'Drew': 'squidly' aktualisiert wurde. Da Wörterbücher ungeordnet sein können, kann dieses Paar überall in der Wörterbuchausgabe auftreten. Wenn wir das Wörterbuch Benutzernamen später in unserer Programmdatei verwenden, wird es das zusätzliche Schlüssel-Wert-Paar enthalten.

Zusätzlich kann diese Syntax auch zum Ändern des Werts verwendet werden, der einem Schlüssel zugewiesen ist. In diesem Fall werden wir auf einen vorhandenen Schlüssel verweisen und ihm einen anderen Wert übergeben.

Betrachten wir ein Wörterbuch drew, das einer der Benutzer in einem bestimmten Netzwerk ist. Wir sagen, dass dieser Benutzer heute einen Anstieg der Follower hatte, daher müssen wir den Ganzzahlwert, der dem Schlüssel 'followers' übergeben wird, aktualisieren. Wir verwenden die print()-Funktion, um zu überprüfen, ob das Wörterbuch geändert wurde.

drew = {'username': 'squidly', 'online': True, 'followers': 305}

drew['followers'] = 342

print(drew)
Output
{'username': 'squidly', 'followers': 342, 'online': True}

In der Ausgabe sehen wir, dass die Anzahl der Follower vom Ganzzahlwert 305 auf 342 gesprungen ist.

Wir können diese Methode verwenden, um Schlüssel-Wert-Paare zu Wörterbüchern mit Benutzereingaben hinzuzufügen. Schreiben wir ein schnelles Programm, usernames.py, das auf der Befehlszeile ausgeführt wird und Eingaben vom Benutzer ermöglicht, um weitere Namen und zugehörige Benutzernamen hinzuzufügen:

usernames.py
# Definiere ursprüngliches Wörterbuch
usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

# Richte eine while-Schleife ein, um zu iterieren
while True:

    # Bitte den Benutzer, einen Namen einzugeben
    print('Enter a name:')

    # Weise der Variablen name zu
    name = input()

    # Überprüfe, ob der Name im Wörterbuch vorhanden ist, und gib Feedback aus
    if name in usernames:
        print(usernames[name] + ' is the username of ' + name)

    # Wenn der Name nicht im Wörterbuch ist...
    else:

        # Gib Feedback aus
        print('I don\'t have ' + name + '\'s username, what is it?')

        # Nehme einen neuen Benutzernamen für den zugehörigen Namen entgegen
        username = input()

        # Weise den Benutzernamenwert dem Namenschlüssel zu
        usernames[name] = username

        # Gib Feedback aus, dass die Daten aktualisiert wurden
        print('Data updated.')

Führen wir das Programm auf der Befehlszeile aus:

  1. python usernames.py

Wenn wir das Programm ausführen, erhalten wir eine Ausgabe wie folgt:

Output
Enter a name: Sammy sammy-shark is the username of Sammy Enter a name: Jesse I don't have Jesse's username, what is it? JOctopus Data updated. Enter a name:

Wenn wir mit dem Testen des Programms fertig sind, können wir STRG + C drücken, um das Programm zu beenden. Sie können einen Auslöser einrichten, um das Programm zu beenden (zum Beispiel durch Eingabe des Buchstabens q) mit einer bedingten Anweisung, um den Code zu verbessern.

Dies zeigt, wie Sie Wörterbücher interaktiv ändern können. Bei diesem bestimmten Programm verlieren Sie sofort alle Ihre Daten, sobald Sie das Programm mit STRG + C beenden, es sei denn, Sie implementieren eine Möglichkeit, das Lesen und Schreiben von Dateien zu behandeln.

Wir können auch Wörterbücher hinzufügen und ändern, indem wir die Methode dict.update() verwenden. Dies unterscheidet sich von der append() Methode, die in Listen verfügbar ist.

In dem unten stehenden Wörterbuch jesse fügen wir den Schlüssel 'followers' hinzu und geben ihm einen ganzzahligen Wert mit jesse.update(). Danach lassen Sie uns das aktualisierte Wörterbuch print().

jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

jesse.update({'followers': 481})

print(jesse)
Output
{'followers': 481, 'username': 'JOctopus', 'points': 723, 'online': False}

Aus der Ausgabe können wir sehen, dass wir das Schlüssel-Wert-Paar 'followers': 481 erfolgreich zum Wörterbuch jesse hinzugefügt haben.

Wir können auch die Methode dict.update() verwenden, um ein vorhandenes Schlüssel-Wert-Paar zu ändern, indem wir einen bestimmten Wert für einen bestimmten Schlüssel ersetzen.

Lassen Sie uns den Online-Status von Sammy von True auf False im Wörterbuch sammy ändern:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

sammy.update({'online': False})

print(sammy)
Output
{'username': 'sammy-shark', 'followers': 987, 'online': False}

Die Zeile sammy.update({'online': False}) bezieht sich auf den vorhandenen Schlüssel 'online' und ändert seinen Booleschen Wert von True auf False. Wenn wir das Wörterbuch mit print() aufrufen, sehen wir die Aktualisierung im Ausgabefenster.

Um Elemente zu Wörterbüchern hinzuzufügen oder Werte zu ändern, können wir entweder die Syntax dict[key] = value oder die Methode dict.update() verwenden.

Elemente aus Wörterbüchern löschen

Genau wie Sie Schlüssel-Wert-Paare hinzufügen und Werte innerhalb des Wörterbuchdatentyps ändern können, können Sie auch Elemente innerhalb eines Wörterbuchs löschen.

Um ein Schlüssel-Wert-Paar aus einem Wörterbuch zu entfernen, verwenden wir die folgende Syntax:

del dict[key]

Lassen Sie uns das Wörterbuch jesse nehmen, das einen der Benutzer repräsentiert. Wir sagen, dass Jesse die Online-Plattform nicht mehr zum Spielen von Spielen verwendet, also entfernen wir den Eintrag, der mit dem Schlüssel 'points' verbunden ist. Dann drucken wir das Wörterbuch aus, um zu bestätigen, dass das Element gelöscht wurde:

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

del jesse['points']

print(jesse)
Output
{'online': False, 'username': 'JOctopus', 'followers': 481}

Die Zeile del jesse['points'] entfernt das Schlüssel-Wert-Paar 'points': 723 aus dem Wörterbuch jesse.

Wenn wir ein Wörterbuch von all seinen Werten löschen möchten, können wir dies mit der Methode dict.clear() tun. Dadurch bleibt ein gegebenes Wörterbuch erhalten, falls wir es später im Programm verwenden müssen, aber es enthält keine Elemente mehr.

Lassen Sie uns alle Elemente im Wörterbuch jesse entfernen:

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

jesse.clear()

print(jesse)
Output
{}

Die Ausgabe zeigt, dass wir jetzt ein leeres Wörterbuch ohne Schlüssel-Wert-Paare haben.

Wenn wir ein bestimmtes Wörterbuch nicht mehr benötigen, können wir del verwenden, um es vollständig loszuwerden:

del jesse

print(jesse)

Wenn wir nach dem Löschen des Wörterbuchs jesse einen Aufruf von print() durchführen, erhalten wir folgenden Fehler:

Output
... NameError: name 'jesse' is not defined

Weil Wörterbücher veränderbare Datentypen sind, können sie ergänzt, verändert und Elemente hinzugefügt sowie gelöscht werden.

Schlussfolgerung

In diesem Tutorial wurde die Datenstruktur Wörterbuch in Python behandelt. Wörterbücher bestehen aus Schlüssel-Wert-Paaren und bieten eine Möglichkeit, Daten ohne Verwendung von Indizierung zu speichern. Dadurch können wir Werte basierend auf ihrer Bedeutung und Beziehung zu anderen Datentypen abrufen.

Von hier aus können Sie mehr über andere Datentypen in unserem Tutorial „Verständnis von Datentypen“ erfahren.

Sie können den Dictionary-Datentyp in Programmierprojekten wie Web-Scraping mit Scrapy sehen.

Source:
https://www.digitalocean.com/community/tutorials/understanding-dictionaries-in-python-3