Python-sanakirjan ymmärtäminen

Tässä opetusohjelmassa opitaan Python-sanakirjan ymmärtämisestä ja sen käytöstä esimerkkien avulla.

Sanakirjat ovat Pythonissa tietotyyppejä, joiden avulla voimme tallentaa tietoja avain / arvo-pariin . Esimerkiksi:

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

Lisätietoja heistä on osoitteessa Python Dictionary

Mikä on sanakirjan ymmärtäminen Pythonissa?

Sanakirjan ymmärtäminen on tyylikäs ja ytimekäs tapa luoda sanakirjoja.

Esimerkki 1: Sanakirjan ymmärtäminen

Harkitse seuraavaa koodia:

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

Luodaan nyt sanakirja yllä olevaan ohjelmaan sanakirjan ymmärtämisen avulla.

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

Molempien ohjelmien tulos on sama.

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

Molemmissa ohjelmissa olemme luoneet sanaston, square_dictjossa on numero-neliöavain / arvo-pari .

Sanakirjan ymmärtämisen avulla voimme kuitenkin luoda sanakirjan yhdellä rivillä .

Sanakirjan ymmärtämisen käyttäminen

Edellä olevasta esimerkistä voimme nähdä, että sanakirjan ymmärtäminen tulisi kirjoittaa tietyllä kaavalla.

Pienin syntaksin sanakirjan ymmärtäminen on:

 sanakirja = (avain: toistettavien muuttujien arvo) 

Verrataan tätä syntaksia sanakirjan ymmärtämiseen yllä olevasta esimerkistä.

Katsotaan nyt, kuinka voimme käyttää sanakirjan ymmärtämistä käyttämällä toisen sanakirjan tietoja.

Esimerkki 3: Kuinka käyttää Sanakirjan ymmärtämistä

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

Tuotos

 ('maito': 0.7752, 'kahvi': 1.9, 'leipä': 1.9) 

Täällä voimme nähdä, että haimme tuotteiden hinnat dollareina ja muunnimme ne puntaan. Sanakirjan ymmärtämisen avulla tehtävä on paljon yksinkertaisempi ja lyhyempi.

Ehdolliset sanakirjan ymmärtämisessä

Voimme edelleen mukauttaa sanakirjan ymmärtämistä lisäämällä siihen ehtoja. Katsotaanpa esimerkkiä.

Esimerkki 4: Jos ehdollinen sanakirjan ymmärtäminen

 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) 

Tuotos

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

Kuten näemme, ifsanakirjan ymmärtämisen lausekkeen vuoksi on lisätty vain tasa-arvoisia kohteita .

Esimerkki 5: Moninkertainen, jos ehdollinen sanakirjan ymmärtäminen

 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) 

Tuotos

 ('john': 33) 

Tässä tapauksessa vain ne kohteet, joiden pariton arvo on alle 40, on lisätty uuteen sanakirjaan.

Se johtuu ifsanakirjan ymmärtämisen monista lausekkeista. Ne vastaavat andtoimintaa, jossa molempien ehtojen on täytyttävä.

Esimerkki 6: if-else ehdollisen sanakirjan ymmärtäminen

 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) 

Tuotos

 ('jack': 'nuori', 'michael': 'vanha', 'guido': 'vanha', 'john': 'nuori') 

Tässä tapauksessa uusi sanakirja luodaan sanakirjan ymmärtämisen avulla.

Kohteiden, joiden arvo on 40 tai enemmän, arvo on "vanha", kun taas toisten arvo on "nuori".

Sisäkkäinen sanakirjan ymmärtäminen

Voimme lisätä sanakirjan ymmärtämyksiä itse sanakirjojen ymmärtämiseen luoda sisäkkäisiä sanakirjoja. Katsotaanpa esimerkkiä.

Esimerkki 7: Sisäkkäinen sanakirja kahdella sanakirjan ymmärtämisellä

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

Tuotos

 (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

Vaikka sanakirjan ymmärtäminen sopii erinomaisesti tyylikkään ja helposti luettavan koodin kirjoittamiseen, ne eivät ole aina oikea valinta.

Meidän on oltava varovaisia ​​käyttäessäsi niitä:

  • He voivat joskus tehdä koodista hitaamman ja kuluttaa enemmän muistia.
  • Ne voivat myös heikentää koodin luettavuutta.

Emme saa yrittää sovittaa niihin vaikeaa logiikkaa tai suurta määrää sanakirjojen ymmärtämistä vain siksi, että koodi tehdään yksiriviseksi. Näissä tapauksissa on parempi valita muut vaihtoehdot, kuten silmukat.

Mielenkiintoisia artikkeleita...