Pochopenie slovníka Python

V tomto výučbe sa pomocou príkladov dozvieme o porozumení slovníka Python a o tom, ako ho používať.

Slovníky sú dátové typy v Pythone, ktoré nám umožňujú ukladať údaje do páru kľúč / hodnota . Napríklad:

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

Ak sa o nich chcete dozvedieť viac, navštívte stránku: Python Dictionary

Čo je slovníkové porozumenie v Pythone?

Pochopenie slovníka je elegantný a výstižný spôsob vytvárania slovníkov.

Príklad 1: Porozumenie slovníka

Zvážte nasledujúci kód:

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

Teraz vytvorme slovník vo vyššie uvedenom programe pomocou porozumenia slovníka.

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

Výstup oboch programov bude rovnaký.

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

V oboch programoch sme vytvorili slovník square_dicts dvojicou kľúč / hodnota číselný štvorec .

Používanie slovníka s porozumením nám však umožnilo vytvoriť slovník v jednom riadku .

Používanie slovníka s porozumením

Z vyššie uvedeného príkladu vidíme, že porozumenie slovníka by malo byť napísané konkrétnym spôsobom.

Minimálna syntax pre porozumenie slovníka je:

 dictionary = (key: value for vars in iterable) 

Porovnajme túto syntax s porozumením slovníka z vyššie uvedeného príkladu.

Teraz sa pozrime, ako môžeme použiť porozumenie slovníka pomocou údajov z iného slovníka.

Príklad 3: Ako používať slovníkové porozumenie

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

Výkon

 („mlieko“: 0,7752, „káva“: 1,9, „chlieb“: 1,9) 

Tu vidíme, že sme načítali ceny položiek v dolároch a prevádzali ich na libry. Používanie slovníka s porozumením robí túto úlohu oveľa jednoduchšou a kratšou.

Podmienky v chápaní slovníka

Pochopenie slovníka môžeme ďalej prispôsobiť pridaním podmienok. Pozrime sa na príklad.

Príklad 4: Ak Podmienené porozumenie slovníka

 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) 

Výkon

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

Ako vidíme, boli pridané iba položky s párnou hodnotou, kvôli ifdoložke v porozumení slovníka.

Príklad 5: Viacnásobné porozumenie podmieneného slovníka

 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) 

Výkon

 ('john': 33) 

V takom prípade boli do nového slovníka pridané iba položky s nepárnou hodnotou menšou ako 40.

Je to kvôli viacerým ifvetám v slovníku s porozumením. Sú rovnocenné s andprevádzkou, pri ktorej musia byť splnené obidve podmienky.

Príklad 6: Podmienené porozumenie slovníka if-else

 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) 

Výkon

 ('jack': 'mladý', 'michael': 'starý', 'guido': 'starý', 'john': 'mladý') 

V takom prípade sa vytvorí nový slovník s porozumením slovníka.

Položky s hodnotou 40 alebo viac majú hodnotu „starého“, zatiaľ čo iné majú hodnotu „mladého“.

Pochopenie vnoreného slovníka

K samotným výkladom slovníka môžeme pridať porozumenie slovníka, aby sme vytvorili vnorené slovníky. Pozrime sa na príklad.

Príklad 7: Vnorený slovník s dvoma výkladmi slovníka

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

Výkon

 (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

Aj keď sú slovníky s porozumením vhodné na písanie elegantného a ľahko čitateľného kódu, nie vždy sú správnou voľbou.

Keď ich používame ako:

  • Niekedy môžu spomaliť chod kódu a spotrebovať viac pamäte.
  • Môžu tiež znížiť čitateľnosť kódu.

Nesmieme sa snažiť vložiť do nich zložitú logiku alebo veľké množstvo slovníkového porozumenia, len aby bol kód jednotný. V týchto prípadoch je lepšie zvoliť iné alternatívy, napríklad slučky.

Zaujímavé články...