Erfahren Sie alles über das Python-Dictionary-Comprehension: wie Sie es zum Erstellen von Wörterbüchern verwenden können, um (verschachtelte) for-Schleifen oder Lambda-Funktionen durch map(), filter() und reduce() zu ersetzen, …!
Wörterbücher (oder dictin Python) sind eine Möglichkeit, Elemente so zu speichern, wie Sie es in einer Python-Liste tun würden. Anstatt jedoch über den Index auf Elemente zuzugreifen, weisen Sie ihnen einen festen Schlüssel zu und greifen über den Schlüssel auf das Element zu. Was Sie jetzt haben, ist ein „Schlüssel-Wert“-Paar, das für viele Probleme manchmal eine geeignetere Datenstruktur ist als eine einfache Liste. Sie werden in der Datenwissenschaft häufig mit Wörterbüchern zu tun haben, weshalb das Wörterbuchverständnis eine Fähigkeit ist, die Sie beherrschen möchten.
In diesem Tutorial:
- Zunächst erfahren Sie, was ein python dictionary wirklich ist und wie Sie es effektiv nutzen können.
- Als Nächstes lernen Sie Python-Dictionary Comprehensions kennen: Sie erfahren, was das ist, warum es wichtig ist und wie es als Alternative zu For-Schleifen und Lambda-Funktionen dienen kann.
- Sie lernen, wie Sie Bedingungen in Wörterbuchverständnisse einfügen: Sie arbeiten mit if-Bedingungen, mehreren if-Bedingungen und auch if-else-Anweisungen.
- Abschließend erfahren Sie, was verschachteltes Wörterbuchverständnis ist, wie Sie es verwenden und wie Sie es möglicherweise mit For-Schleifen umschreiben können.
Um den Beispielcode in diesem Tutorial ganz einfach selbst auszuführen, können Sie kostenlos eine DataLab-Arbeitsmappe erstellen , in der Python vorinstalliert ist und die alle Codebeispiele enthält. Weitere Übungen zum Wörterbuchverständnis finden Sie in dieser praktischen DataCamp-Übung .
Python dictionary
Ein Wörterbuch in Python ist eine Sammlung von Elementen, auf die über einen bestimmten Schlüssel und nicht über einen Index zugegriffen werden kann. Was bedeutet das?
Stellen Sie sich ein Wörterbuch in der realen Welt vor. Wenn Sie die Bedeutung eines Wortes nachschlagen müssen, versuchen Sie, die Bedeutung anhand des Wortes selbst und nicht anhand des möglichen Index des Wortes zu finden. python dictionary arbeiten nach demselben Konzept: Das Wort, nach dessen Bedeutung Sie suchen, ist der Schlüssel, und die Bedeutung des Wortes ist der Wert. Sie müssen den Index des Wortes in einem Wörterbuch nicht kennen, um seine Bedeutung zu finden.
Initialisieren eines Wörterbuchs in Python
Sie können ein Wörterbuch in Python folgendermaßen initialisieren:
Zuerst erstellen wir ein Wörterbuch mit dem Namen a„Apfel“: „Obst“, „Rote Bete“: „Gemüse“ und „Kuchen“: „Dessert“. Die Schlüssel sind Zeichenfolgen, die die Namen der Elemente darstellen, und die Werte sind Zeichenfolgen, die den Typ oder die Kategorie des Elements darstellen.
aAls nächstes fügen wir dem Wörterbuch mit der Syntax a ein neues Schlüssel-Wert-Paar hinzu [‚doughnut‘] = ’snack‘. Dadurch wird dem Wörterbuch der Schlüssel „doughnut“ mit dem entsprechenden Wert „snack“ hinzugefügt.
Die dritte Codezeile gibt den Wert aus, der dem Schlüssel „Apfel“ im Wörterbuch zugeordnet ist a. Da „Apfel“ ein Schlüssel im Wörterbuch ist, gibt der Code den Wert „Obst“ aus.
Die vierte Codezeile versucht, den Wert zu drucken, der dem Schlüssel 0 im Wörterbuch zugeordnet ist a, der jedoch kein gültiger Schlüssel im Wörterbuch ist. Dies führt zu einem KeyError, der ausgelöst wird, wenn versucht wird, auf einen Schlüssel zuzugreifen, der in einem Wörterbuch nicht vorhanden ist.
Python dictionarydatentypen
Die Elemente in einem Wörterbuch können beliebige Datentypen haben. Schauen Sie sich unten einige weitere Beispiele für ein Wörterbuch an, um sich ein Bild davon zu machen:
Erstellen Sie ein Wörterbuch amit vier Schlüssel-Wert-Paaren:
Aktualisieren Sie den mit dem Schlüssel „one“ verknüpften Wert im Wörterbuch a auf 1,0.
Löschen Sie das mit dem Schlüssel „eins“ verknüpfte Schlüssel-Wert-Paar aus dem Wörterbuch a.
aEntfernen Sie mit der Methode clear() alle Schlüssel-Wert-Paare aus dem Wörterbuch .
Löschen Sie das Wörterbuch amit dem Schlüsselwort del.
Es ist wichtig, sich daran zu erinnern, dass ein Schlüssel in einem Wörterbuch eindeutig sein muss; Duplikate sind nicht zulässig. Im Falle doppelter Schlüssel wird Python jedoch, anstatt einen Fehler auszugeben, die letzte Instanz des Schlüssels als gültig betrachten und das erste Schlüssel-Wert-Paar einfach ignorieren. Sehen Sie selbst:
Python dictionary verständnis
Dictionary Comprehension ist eine Methode zum Umwandeln eines Wörterbuchs in ein anderes. Während dieser Umwandlung können Elemente des ursprünglichen Wörterbuchs bedingt in das neue Wörterbuch aufgenommen werden, und jedes Element kann nach Bedarf umgewandelt werden.
Eine gute Listenableitung kann Ihren Code ausdrucksvoller und damit leichter lesbar machen. Der Schlüssel zum Erstellen von Ableitungen besteht darin, sie nicht so komplex werden zu lassen, dass Ihnen schwindelig wird, wenn Sie versuchen zu entschlüsseln, was sie eigentlich tun. Bewahren Sie die Idee der „leichten Lesbarkeit“ am Leben.
keyDie Möglichkeit zum Dictionary Comprehension in Python besteht darin, auf die Objekte und die valueObjekte eines Dictionarys zugreifen zu können .
Wie kann das erreicht werden?
Python bietet Ihnen die Lösung! Sie können hierfür einfach die integrierten Methoden verwenden:
Der obige Code erstellt ein python dictionary, das dict1mit vier Schlüssel-Wert-Paaren aufgerufen wird. Die Methode keys() wird für das Wörterbuch aufgerufen und gibt ein Ansichtsobjekt zurück, das alle Schlüssel im Wörterbuch enthält.
Die Methode values() wird auch für das Wörterbuch aufgerufen und gibt ein Ansichtsobjekt zurück, das alle Werte im Wörterbuch enthält.
Beide Ansichtsobjekte verhalten sich wie Mengen und können verwendet werden, um Mengenoperationen auf den Schlüsseln bzw. Werten durchzuführen.
Beachten Sie, dass die Reihenfolge der Schlüssel und Werte in den Ansichtsobjekten nicht unbedingt mit der Reihenfolge übereinstimmt, in der sie dem Wörterbuch hinzugefügt wurden.
Verwenden der Methode items()
Jetzt wissen Sie, wie Sie auf alle Schlüssel und ihre Werte in einem Wörterbuch zugreifen können. Mit der folgenden items()Methode können Sie auch auf jedes Schlüssel-Wert-Paar in einem Wörterbuch zugreifen:
Dies ist die allgemeine Vorlage, der Sie für das Wörterbuchverständnis in Python folgen können:
Dies kann als grundlegende und einfachste Vorlage dienen. Sie kann durch das Hinzufügen von Bedingungen immer komplexer werden.
Einfaches python dictionaryverständnisbeispiel
Beginnen wir mit einem einfachen Wörterbuchverständnis:
Im obigen Comprehension-Code erstellen wir ein neues Wörterbuch double_dict1aus einem Wörterbuch dict1, indem wir einfach jeden Wert darin verdoppeln.
Sie können auch Änderungen an den Schlüsselwerten vornehmen. Lassen Sie uns beispielsweise dasselbe Wörterbuch wie oben erstellen, aber auch die Namen des Schlüssels ändern.
Warum Wörterbuchverständnis verwenden?
Dictionary Comprehension ist ein leistungsstarkes Konzept und kann zum Ersetzen forvon Schleifen und lambdaFunktionen verwendet werden. Allerdings können nicht alle For-Schleifen als Dictionary Comprehension geschrieben werden, aber jedes Dictionary Comprehension kann mit einer For-Schleife geschrieben werden.
Stellen Sie sich das folgende Problem vor: Sie möchten ein neues Wörterbuch erstellen, dessen Schlüssel eine durch 2 teilbare Zahl im Bereich von 0 bis 10 ist und dessen Wert das Quadrat dieser Zahl ist.
Sehen wir uns an, wie Sie dasselbe Problem mit einer For-Schleife und einem Wörterbuchverständnis lösen können:
Alternative zu forSchleifen
For-Schleifen werden verwendet, um eine bestimmte Operation oder einen Befehlsblock in einem Programm eine bestimmte Anzahl von Malen zu wiederholen. Verschachtelte For-Schleifen (For-Schleife innerhalb einer anderen For-Schleife) können jedoch verwirrend und komplex werden. Wörterbuchverständnisse sind in solchen Situationen besser und können die Lesbarkeit und Ihr Verständnis des Codes vereinfachen.
Tipp : Weitere Informationen zu Schleifen in Python finden Sie im Tutorial „Loops in Python“ von DataCamp.
Alternative zu lambdaFunktionen
Lambda-Funktionen sind eine Möglichkeit, kleine anonyme Funktionen zu erstellen. Es sind Funktionen ohne Namen. Diese Funktionen sind Wegwerffunktionen, die nur dort benötigt werden, wo sie erstellt wurden. Lambda-Funktionen werden hauptsächlich in Kombination mit den Funktionen filter(), map()und verwendet reduce().
Schauen wir uns die Lambda-Funktion zusammen mit der map()Funktion an:
Beispiel für das python dictionaryverständnis
Sehen wir uns eine andere Situation an, in der Sie die Fahrenheit-Temperaturen eines Wörterbuchs in Celsius umrechnen möchten.
Lassen Sie uns den Code aufschlüsseln: Zuerst müssen Sie eine mathematische Formel definieren, die die Umrechnung von Fahrenheit in Celsius vornimmt.
Im Code geschieht dies mit Hilfe der Lambda-Funktion. Diese übergibst du dann als Argument an die map()Funktion, die die Operation dann auf jedes Element in der fahrenheit.values()Liste anwendet.
Erinnern Sie sich an die values()Funktion? Sie gibt eine Liste mit den im Wörterbuch gespeicherten Elementen zurück.
Was Sie jetzt haben, ist eine Liste mit den Temperaturwerten in Celsius, aber für die Lösung muss es sich um ein Wörterbuch handeln.
Python verfügt über eine integrierte Funktion namens , zip()die die Elemente von Iteratoren durchgeht und aggregiert. Weitere Informationen zur zip()Funktion finden Sie in diesem Python-Beispiel .
In unserem obigen Beispiel aggregiert die Zip-Funktion das Element aus fahrenheit.keys()und die celsiusListe und ergibt ein Schlüssel-Wert-Paar, das Sie mithilfe der Funktion in einem Wörterbuch zusammenstellen können dict, was das gewünschte Ergebnis ist.
Versuchen wir nun, dasselbe Problem mithilfe der Wörterbuchverständnismethode zu lösen:
Hier ist eine Aufschlüsselung dessen, was wir im obigen Code erstellt haben:
- Erstellen Sie ein Wörterbuch fahrenheitmit dem Namen und vier Schlüssel-Wert-Paaren, die die Temperaturwerte in Fahrenheit darstellen.
- Definieren Sie ein neues Wörterbuch mit dem Namen celsius.
- Verwenden Sie eine Wörterbuchableitung, um das fahrenheitWörterbuch zu durchlaufen und die Fahrenheit-Temperaturwerte mithilfe der Formel in Celsius umzurechnen (5/9) * (F-32).
- Für jedes Schlüssel-Wert-Paar in fahrenheitwird der Schlüssel der Variablen kund der Wert der Variablen zugewiesen v.
- Der Wert der Celsius-Temperatur, der jeder Fahrenheit-Temperatur entspricht, wird mithilfe der obigen Formel berechnet und als Schlüssel-Wert-Paar zum celsiusWörterbuch hinzugefügt.
- Das resultierende celsiusWörterbuch wird auf der Konsole ausgegeben.
Wie Sie sehen, kann das Problem mit einer einzigen Codezeile gelöst werden, indem man das Wörterbuchverständnis verwendet, im Vergleich zum zweistufigen Prozess und dem Verständnis der Funktionsweise von drei Funktionen ( lambda, map()und zip()) für die erste Implementierung.
Darüber hinaus ist die Lösung mit Dictionary Comprehension intuitiv und leicht verständlich. Daher kann Dictionary Comprehension als gute Alternative zu den Lambda-Funktionen dienen.
Hinzufügen von Bedingungen zum Wörterbuchverständnis
Bei der Problemlösung müssen Sie häufig Bedingungen an eine Lösung anfügen. Sehen wir uns an, wie Sie Bedingungen in das Wörterbuchverständnis einbauen können, um es leistungsfähiger zu machen.
If-Bedingung
Nehmen wir an, Sie müssen aus einem vorhandenen Wörterbuch ein neues Wörterbuch erstellen, allerdings mit Elementen, die größer als 2 sind. Dies bedeutet, dass Sie der Originalvorlage, die Sie oben gesehen haben, eine Bedingung hinzufügen müssen …
Das ist nicht so schwer! Aber was ist, wenn mehrere Erkrankungen vorliegen?
Mehrere If-Bedingungen
Was wäre, wenn Sie im obigen Problem nicht nur die Elemente größer als 2 abrufen, sondern gleichzeitig auch prüfen müssten, ob es sich um Vielfache von 2 handelt?
Die Lösung zum Hinzufügen mehrerer Bedingungen ist so einfach wie das Hinzufügen der Bedingungen nacheinander in Ihrem Verständnis. Sie müssen jedoch vorsichtig sein, was Sie in dem Problem versuchen zu tun. Denken Sie daran, dass die aufeinanderfolgenden if-Anweisungen so funktionieren, als ob sie andKlauseln zwischen sich hätten.
Sehen wir uns noch ein Beispiel mit drei Konditionalen an:
In einer For-Schleife entspricht dies:
If-Else-Bedingungen
Auch der Umgang mit einer if-else-Bedingung ist mit Dictionary-Verständnis einfach. Sehen Sie sich das folgende Beispiel an, um es selbst zu sehen:
Verschachteltes Wörterbuchverständnis
Verschachtelung ist ein Programmierkonzept, bei dem Daten in Schichten organisiert werden oder Objekte andere ähnliche Objekte enthalten. Sie haben sicher schon oft eine verschachtelte „if“-Struktur gesehen, also eine if-Bedingung innerhalb einer anderen if-Bedingung harry potter.
In ähnlicher Weise können Wörterbücher verschachtelt werden, und daher können auch ihre Verständnisse verschachtelt werden. Sehen wir uns an, was das bedeutet:
Dies ist ein Beispiel für ein verschachteltes Wörterbuch. Dies nested_dictist ein Wörterbuch mit den Schlüsseln: firstund second, die Wörterbuchobjekte in ihren Werten enthalten. Der Code arbeitet mit den inneren Wörterbuchwerten und konvertiert sie in Float und kombiniert dann die äußeren Schlüssel mit den neuen inneren Floatwerten zu einem neuen Wörterbuch.
Der Code verfügt außerdem über ein verschachteltes Wörterbuchverständnis, das ein Wörterbuchverständnis innerhalb eines anderen ist. Das Wörterbuchverständnis kann, wenn es verschachtelt ist, ziemlich schwer zu lesen und zu verstehen sein, was den ganzen Sinn der Verwendung von Verständnissen zunichte macht.
Wenn die Struktur des Wörterbuchs, mit dem Sie arbeiten, komplizierter wird, wird auch das Wörterbuchverständnis komplizierter. In solchen Situationen ist es möglicherweise besser, in Ihrem Code keine komplizierten Verständnisse zu verwenden.
Beachten Sie , dass Sie den obigen Codeabschnitt auch mit einer verschachtelten For-Schleife neu schreiben können:
Abschließende Gedanken
Hoffentlich haben Sie jetzt etwas über Wörterbücher in Python gelernt, über das Konzept des Verständnisses und warum und wo das python dictionaryverständnis nützlich sein kann.
Übung macht Ihr Python besser! Sehen Sie sich einige unserer besten Python-Tipps und -Tricks an , um Ihren Code zu verbessern, oder absolvieren Sie unseren Python-Skill-Track , um weitere Grundlagen zu erlernen.
Häufig gestellte Fragen zum Python Dictionary Comprehension
Dictionary Comprehension ist eine prägnante und lesbare Methode zum Erstellen von Wörterbüchern in Python. Es bietet eine Möglichkeit, ein neues Wörterbuch aus einem iterierbaren Objekt wie einer Liste, einem Tupel oder einem Set zu erstellen.
Die Syntax für das Wörterbuchverständnis in Python lautet wie folgt:{key:value for (key,value) in iterable}
Sie können mithilfe der Wörterbuch-Ableitung in Python ein Wörterbuch aus einer Liste erstellen, indem Sie über die Liste iterieren und die Listenelemente als Schlüssel und Werte im neuen Wörterbuch festlegen.
Ja, Sie können in Python bedingte Anweisungen im Wörterbuchverständnis verwenden, um bestimmte Elemente herauszufiltern.
Die Vorteile der Verwendung von Dictionary Comprehension in Python liegen darin, dass es prägnant und lesbar ist und die zum Erstellen von Wörterbüchern erforderliche Codemenge reduziert. Es ermöglicht auch das Filtern und Transformieren von Wörterbuchelementen in einer einzigen Codezeile.