Python-Wörterbuchverständnis

In diesem Tutorial lernen wir anhand von Beispielen das Verständnis des Python-Wörterbuchs und dessen Verwendung kennen.

Wörterbücher sind Datentypen in Python, mit denen wir Daten in Schlüssel / Wert-Paaren speichern können . Beispielsweise:

 my_dict = (1: 'apple', 2: 'ball') 

Um mehr über sie zu erfahren, besuchen Sie: Python Dictionary

Was ist Wörterbuchverständnis in Python?

Das Wörterbuchverständnis ist eine elegante und prägnante Möglichkeit, Wörterbücher zu erstellen.

Beispiel 1: Wörterbuchverständnis

Betrachten Sie den folgenden Code:

 square_dict = dict() for num in range(1, 11): square_dict(num) = num*num print(square_dict) 

Lassen Sie uns nun das Wörterbuch im obigen Programm unter Verwendung des Wörterbuchverständnisses erstellen.

 # dictionary comprehension example square_dict = (num: num*num for num in range(1, 11)) print(square_dict) 

Die Ausgabe beider Programme ist gleich.

 (1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100)

In beiden Programmen haben wir ein Wörterbuch square_dictmit einem Paar aus Schlüssel und Wert erstellt .

Durch die Verwendung des Wörterbuchverständnisses konnten wir jedoch ein Wörterbuch in einer einzigen Zeile erstellen .

Verwenden des Wörterbuchverständnisses

Aus dem obigen Beispiel können wir erkennen, dass das Wörterbuchverständnis in einem bestimmten Muster geschrieben werden sollte.

Die minimale Syntax für das Wörterbuchverständnis lautet:

 dictionary = (Schlüssel: Wert für vars in iterable) 

Vergleichen wir diese Syntax mit dem Wörterbuchverständnis aus dem obigen Beispiel.

Lassen Sie uns nun sehen, wie wir das Wörterbuchverständnis mithilfe von Daten aus einem anderen Wörterbuch verwenden können.

Beispiel 3: Verwenden des Wörterbuchverständnisses

 #item price in dollars old_price = ('milk': 1.02, 'coffee': 2.5, 'bread': 2.5) dollar_to_pound = 0.76 new_price = (item: value*dollar_to_pound for (item, value) in old_price.items()) print(new_price) 

Ausgabe

 ("Milch": 0,7752, "Kaffee": 1,9, "Brot": 1,9) 

Hier können wir sehen, dass wir die Artikelpreise in Dollar abgerufen und in Pfund umgerechnet haben. Die Verwendung des Wörterbuchverständnisses macht diese Aufgabe viel einfacher und kürzer.

Bedingungen im Wörterbuchverständnis

Wir können das Wörterbuchverständnis weiter anpassen, indem wir Bedingungen hinzufügen. Schauen wir uns ein Beispiel an.

Beispiel 4: Wenn bedingtes Wörterbuchverständnis

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) even_dict = (k: v for (k, v) in original_dict.items() if v % 2 == 0) print(even_dict) 

Ausgabe

 ('jack': 38, 'michael': 48) 

Wie wir sehen können, wurden aufgrund der ifKlausel im Wörterbuchverständnis nur die Elemente mit gleichem Wert hinzugefügt .

Beispiel 5: Mehrere, wenn bedingtes Wörterbuchverständnis

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict = (k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40) print(new_dict) 

Ausgabe

 ('John': 33) 

In diesem Fall wurden nur die Elemente mit einem ungeraden Wert von weniger als 40 zum neuen Wörterbuch hinzugefügt.

Dies liegt an den mehreren ifKlauseln im Wörterbuchverständnis. Sie entsprechen einem andBetrieb, bei dem beide Bedingungen erfüllt sein müssen.

Beispiel 6: Bedingtes if-else-Wörterbuchverständnis

 original_dict = ('jack': 38, 'michael': 48, 'guido': 57, 'john': 33) new_dict_1 = (k: ('old' if v> 40 else 'young') for (k, v) in original_dict.items()) print(new_dict_1) 

Ausgabe

 ('jack': 'young', 'michael': 'old', 'guido': 'old', 'john': 'young') 

In diesem Fall wird über das Wörterbuchverständnis ein neues Wörterbuch erstellt.

Die Artikel mit einem Wert von 40 oder mehr haben den Wert "alt", während andere den Wert "jung" haben.

Verständnis für verschachtelte Wörterbücher

Wir können Wörterbuchverständnisse zu Wörterbuchverständnissen selbst hinzufügen, um verschachtelte Wörterbücher zu erstellen. Schauen wir uns ein Beispiel an.

Beispiel 7: Verschachteltes Wörterbuch mit zwei Wörterbuchverständnissen

 dictionary = ( k1: (k2: k1 * k2 for k2 in range(1, 6)) for k1 in range(2, 5) ) print(dictionary) 

Ausgabe

 (2: (1: 2, 2: 4, 3: 6, 4: 8, 5: 10), 3: (1: 3, 2: 6, 3: 9, 4: 12, 5: 15), 4: (1: 4, 2: 8, 3: 12, 4: 16, 5: 20)) 

As you can see, we have constructed a multiplication table in a nested dictionary, for numbers from 2 to 4.

Whenever nested dictionary comprehension is used, Python first starts from the outer loop and then goes to the inner one.

So, the above code would be equivalent to:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = (k2: k1*k2 for k2 in range(1, 6)) print(dictionary) 

It can further be unfolded:

 dictionary = dict() for k1 in range(11, 16): dictionary(k1) = dict() for k2 in range(1, 6): dictionary(k1)(k2) = k1*k2 print(dictionary) 

All these three programs give us the same output.

Advantages of Using Dictionary Comprehension

As we can see, dictionary comprehension shortens the process of dictionary initialization by a lot. It makes the code more pythonic.

Using dictionary comprehension in our code can shorten the lines of code while keeping the logic intact.

Warnings on Using Dictionary Comprehension

Obwohl Wörterbuchverständnisse hervorragend zum Schreiben von elegantem Code geeignet sind, der leicht zu lesen ist, sind sie nicht immer die richtige Wahl.

Wir müssen vorsichtig sein, wenn wir sie verwenden als:

  • Sie können manchmal dazu führen, dass der Code langsamer ausgeführt wird und mehr Speicher verbraucht.
  • Sie können auch die Lesbarkeit des Codes beeinträchtigen.

Wir dürfen nicht versuchen, eine schwierige Logik oder eine große Anzahl von Wörterbuchverständnissen in sie einzubauen, nur um den Code einzeilig zu machen. In diesen Fällen ist es besser, andere Alternativen wie Schleifen zu wählen.

Interessante Beiträge...