Python Dictionary-begrip

In deze tutorial zullen we leren over het begrip van Python-woordenboeken en hoe je het kunt gebruiken met behulp van voorbeelden.

Woordenboeken zijn gegevenstypen in Python waarmee we gegevens in sleutel / waarde-paar kunnen opslaan . Bijvoorbeeld:

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

Ga voor meer informatie over hen naar: Python Dictionary

Wat is woordenboekbegrip in Python?

Woordenboekbegrip is een elegante en beknopte manier om woordenboeken te maken.

Voorbeeld 1: woordenboekbegrip

Beschouw de volgende code:

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

Laten we nu het woordenboek in het bovenstaande programma maken met behulp van woordenboekbegrip.

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

De output van beide programma's zal hetzelfde zijn.

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

In beide programma's hebben we een woordenboek gemaakt square_dictmet een cijfer-vierkant sleutel / waarde-paar .

Echter, met behulp woordenboek begrip liet ons toe om te creëren een woordenboek in een enkele lijn .

Woordenboekbegrip gebruiken

Uit het bovenstaande voorbeeld kunnen we zien dat woordenboekbegrip in een specifiek patroon moet worden geschreven.

De minimale syntaxis voor woordenboekbegrip is:

 Dictionary = (key: value for vars in iterable) 

Laten we deze syntaxis vergelijken met het woordenboekbegrip uit het bovenstaande voorbeeld.

Laten we nu eens kijken hoe we woordenboekbegrip kunnen gebruiken met behulp van gegevens uit een ander woordenboek.

Voorbeeld 3: Woordenboekbegrip gebruiken

 #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) 

Uitvoer

 ('melk': 0,7752, 'koffie': 1,9, 'brood': 1,9) 

Hier kunnen we zien dat we de artikelprijzen in dollars hebben opgehaald en deze hebben omgerekend naar ponden. Het gebruik van woordenboekbegrip maakt deze taak veel eenvoudiger en korter.

Voorwaardelijke bepalingen in woordenboekbegrip

We kunnen het woordenboekbegrip verder aanpassen door er voorwaarden aan toe te voegen. Laten we naar een voorbeeld kijken.

Voorbeeld 4: als voorwaardelijk woordenboekbegrip

 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) 

Uitvoer

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

Zoals we kunnen zien, zijn alleen de items met een even waarde toegevoegd vanwege de ifclausule in het woordenboekbegrip.

Voorbeeld 5: meervoudig als voorwaardelijk woordenboekbegrip

 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) 

Uitvoer

 ('john': 33) 

In dit geval zijn alleen de items met een oneven waarde van minder dan 40 aan het nieuwe woordenboek toegevoegd.

Het is vanwege de meerdere ifclausules in het begrip van het woordenboek. Ze zijn gelijk aan andwerking waarbij aan beide voorwaarden moet worden voldaan.

Voorbeeld 6: if-else voorwaardelijk woordenboekbegrip

 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) 

Uitvoer

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

In dit geval wordt er een nieuw woordenboek gemaakt via woordenboekbegrip.

De items met een waarde van 40 of meer hebben de waarde 'oud' terwijl andere de waarde 'jong' hebben.

Genest woordenboekbegrip

We kunnen woordenboekbegrip zelf toevoegen aan woordenboekbegrip om geneste woordenboeken te maken. Laten we naar een voorbeeld kijken.

Voorbeeld 7: genest woordenboek met twee woordenboekbegrip

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

Uitvoer

 (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

Hoewel woordenboekbegrip geweldig is voor het schrijven van elegante code die gemakkelijk te lezen is, zijn ze niet altijd de juiste keuze.

We moeten voorzichtig zijn bij het gebruik ervan, aangezien:

  • Ze kunnen de code soms langzamer laten werken en meer geheugen in beslag nemen.
  • Ze kunnen ook de leesbaarheid van de code verminderen.

We moeten niet proberen een moeilijke logica of een groot aantal woordenboekbegrip erin te passen, alleen maar om de code enkelvoudig te maken. In deze gevallen is het beter om andere alternatieven te kiezen, zoals loops.

Interessante artikelen...