Pemahaman Kamus Python

Dalam tutorial ini, kita akan belajar mengenai pemahaman kamus Python dan bagaimana menggunakannya dengan bantuan contoh.

Kamus adalah jenis data dalam Python yang membolehkan kita menyimpan data dalam pasangan kunci / nilai . Sebagai contoh:

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

Untuk mengetahui lebih lanjut mengenai mereka, lawati: Kamus Python

Apakah Pemahaman Kamus dalam Python?

Pemahaman kamus adalah cara yang elegan dan ringkas untuk membuat kamus.

Contoh 1: Pemahaman Kamus

Pertimbangkan kod berikut:

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

Sekarang, mari buat kamus dalam program di atas menggunakan pemahaman kamus.

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

Keluaran kedua-dua program akan sama.

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

Dalam kedua-dua program tersebut, kami telah membuat kamus square_dictdengan pasangan kunci / nilai nombor persegi .

Walau bagaimanapun, menggunakan pemahaman kamus membolehkan kita membuat kamus dalam satu baris .

Menggunakan Pemahaman Kamus

Dari contoh di atas, kita dapat melihat bahawa pemahaman kamus harus ditulis dalam corak tertentu.

Sintaks minimum untuk pemahaman kamus adalah:

 kamus = (kunci: nilai untuk vars secara berulang) 

Mari bandingkan sintaks ini dengan pemahaman kamus dari contoh di atas.

Sekarang, mari kita lihat bagaimana kita dapat menggunakan pemahaman kamus menggunakan data dari kamus lain.

Contoh 3: Cara menggunakan Pemahaman Kamus

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

Pengeluaran

 ('susu': 0.7752, 'kopi': 1.9, 'roti': 1.9) 

Di sini, kita dapat melihat bahawa kita mendapatkan harga barang dalam dolar dan menukarnya menjadi pound. Menggunakan pemahaman kamus menjadikan tugas ini jauh lebih mudah dan pendek.

Syarat dalam Pemahaman Kamus

Kami dapat menyesuaikan pemahaman kamus dengan menambahkan syarat padanya. Mari lihat contohnya.

Contoh 4: Sekiranya Pemahaman Kamus Bersyarat

 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) 

Pengeluaran

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

Seperti yang kita lihat, hanya item dengan nilai genap yang telah ditambahkan, kerana ifklausa dalam pemahaman kamus.

Contoh 5: Pemahaman Kamus Berganda jika Bersyarat

 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) 

Pengeluaran

 ('john': 33) 

Dalam kes ini, hanya item dengan nilai ganjil kurang dari 40 yang telah ditambahkan ke kamus baru.

Ini kerana terdapat banyak ifklausa dalam pemahaman kamus. Ia setara dengan andoperasi di mana kedua-dua syarat itu mesti berlaku.

Contoh 6: Pemahaman Kamus Bersyarat 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) 

Pengeluaran

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

Dalam kes ini, kamus baru dibuat melalui pemahaman kamus.

Item dengan nilai 40 atau lebih mempunyai nilai 'tua' sementara yang lain mempunyai nilai 'muda'.

Pemahaman Kamus Bersarang

Kita dapat menambahkan pemahaman kamus ke pemahaman kamus sendiri untuk membuat kamus bersarang. Mari lihat contohnya.

Contoh 7: Kamus Bersarang dengan Dua Fahaman Kamus

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

Pengeluaran

 (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

Walaupun pemahaman kamus sangat bagus untuk menulis kod elegan yang mudah dibaca, itu bukanlah pilihan yang tepat.

Kita mesti berhati-hati semasa menggunakannya sebagai:

  • Kadang-kadang mereka dapat membuat kod berjalan lebih perlahan dan menghabiskan lebih banyak memori.
  • Mereka juga dapat mengurangkan keterbacaan kod.

Kita tidak boleh mencuba logik yang sukar atau sebilangan besar pemahaman kamus di dalamnya hanya untuk membuat kod tunggal berlapis. Dalam kes ini, lebih baik memilih alternatif lain seperti gelung.

Artikel menarik...