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_dict
dengan 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 if
klausa 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 if
klausa dalam pemahaman kamus. Ia setara dengan and
operasi 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.