Python Sözlüğünün Anlaşılması

Bu eğitimde, Python sözlüğü hakkında bilgi edinecek ve örnekler yardımıyla nasıl kullanılacağını öğreneceğiz.

Sözlükler, Python'daki verileri anahtar / değer çiftinde depolamamıza izin veren veri türleridir . Örneğin:

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

Onlar hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin: Python Dictionary

Python'da Sözlük Anlama nedir?

Sözlük anlama, sözlükler oluşturmanın zarif ve özlü bir yoludur.

Örnek 1: Sözlüğü Anlama

Aşağıdaki kodu göz önünde bulundurun:

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

Şimdi yukarıdaki programdaki sözlüğü sözlük anlama özelliğini kullanarak oluşturalım.

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

Her iki programın çıktısı aynı olacaktır.

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

Her iki programda square_dictda sayı-kare anahtar / değer çifti içeren bir sözlük oluşturduk .

Ancak sözlük anlamasını kullanmak tek satırda sözlük oluşturmamızı sağladı .

Sözlük Anlamayı Kullanma

Yukarıdaki örnekten, sözlük anlamanın belirli bir düzende yazılması gerektiğini görebiliriz.

Sözlük anlayışı için minimum sözdizimi şöyledir:

 sözlük = (anahtar: yinelenebilirdeki değişkenler için değer) 

Bu sözdizimini yukarıdaki örnekteki sözlük anlayışı ile karşılaştıralım.

Şimdi, başka bir sözlükteki verileri kullanarak sözlük anlamayı nasıl kullanabileceğimize bakalım.

Örnek 3: Sözlük Anlama nasıl kullanılır

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

Çıktı

 ('süt': 0,7752, 'kahve': 1,9, 'ekmek': 1,9) 

Burada madde fiyatlarını dolar cinsinden alıp pound'a çevirdiğimizi görüyoruz. Sözlük anlamayı kullanmak, bu görevi çok daha basit ve daha kısa hale getirir.

Sözlük Anlamada Koşullar

Koşullar ekleyerek sözlük anlayışını daha da özelleştirebiliriz. Bir örneğe bakalım.

Örnek 4: Koşullu Sözlük Anlama

 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) 

Çıktı

 ("kriko": 38, "michael": 48) 

Gördüğümüz gibi if, sözlük anlayışındaki cümle nedeniyle sadece eşit değere sahip öğeler eklenmiştir .

Örnek 5: Koşullu Sözlük Anlama Durumunda Çoklu

 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) 

Çıktı

 ("john": 33) 

Bu durumda, yeni sözlüğe sadece tek değeri 40'tan küçük olan maddeler eklenmiştir.

ifSözlük anlayışındaki çoklu cümleciklerden kaynaklanmaktadır. andHer iki koşulun da doğru olması gereken operasyona eşdeğerdirler .

Örnek 6: if-else Koşullu Sözlük Anlama

 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) 

Çıktı

 ('jack': 'genç', 'michael': 'eski', 'guido': 'eski', 'john': 'genç') 

Bu durumda sözlük anlama yoluyla yeni bir sözlük oluşturulur.

Değeri 40 ve üzeri olan eşyalar 'eski', diğerleri 'genç' değerine sahiptir.

İç içe geçmiş Sözlük Anlama

İç içe geçmiş sözlükler oluşturmak için sözlük anlayışlarına kendi kendilerine sözlük anlamaları ekleyebiliriz. Bir örneğe bakalım.

Örnek 7: İki Sözlük Anlamalı İç İçe Sözlük

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

Çıktı

 (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

Sözlük anlayışları, okunması kolay zarif kodlar yazmak için harika olsa da, her zaman doğru seçim değildir.

Bunları şu şekilde kullanırken dikkatli olmalıyız:

  • Bazen kodu daha yavaş çalıştırabilir ve daha fazla bellek tüketebilirler.
  • Ayrıca kodun okunabilirliğini de azaltabilirler.

Sırf kodu tek satırlık hale getirmek uğruna zor bir mantığı veya çok sayıda sözlük anlayışını içlerine sığdırmaya çalışmamalıyız. Bu durumlarda, döngüler gibi diğer alternatifleri seçmek daha iyidir.

Ilginç makaleler...