Pemahaman Kamus Python

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

Kamus adalah tipe data dengan Python yang memungkinkan kita menyimpan data dalam key / value pair . Sebagai contoh:

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

Untuk mempelajari lebih lanjut tentang mereka kunjungi: Kamus Python

Apa itu Pemahaman Kamus dengan Python?

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

Contoh 1: Pemahaman Kamus

Perhatikan kode berikut:

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

Sekarang, mari kita buat kamus pada program di atas menggunakan pemahaman kamus.

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

Output dari kedua program tersebut akan sama.

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

Di kedua program, kami telah membuat kamus square_dictdengan pasangan kunci / nilai bilangan kuadrat .

Namun, menggunakan pemahaman kamus memungkinkan kami membuat kamus dalam satu baris .

Menggunakan Pemahaman Kamus

Dari contoh di atas, kita dapat melihat bahwa pemahaman kamus harus ditulis dalam pola tertentu.

Sintaks minimal untuk pemahaman kamus adalah:

 dictionary = (key: value for vars in iterable) 

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

Sekarang, mari kita lihat bagaimana kita bisa 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) 

Keluaran

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

Di sini, kita dapat melihat bahwa kita mengambil harga barang dalam dolar dan mengubahnya menjadi pound. Menggunakan pemahaman kamus membuat tugas ini lebih sederhana dan lebih pendek.

Persyaratan dalam Pemahaman Kamus

Kami selanjutnya dapat menyesuaikan pemahaman kamus dengan menambahkan kondisi ke dalamnya. Mari kita lihat contohnya.

Contoh 4: Jika 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) 

Keluaran

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

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

Contoh 5: Multiple if Conditional Dictionary Comprehension

 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) 

Keluaran

 ('john': 33) 

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

Itu karena banyaknya ifklausa dalam pemahaman kamus. Keduanya setara dengan andoperasi di mana kedua kondisi harus benar.

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) 

Keluaran

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

Dalam hal ini, kamus baru dibuat melalui pemahaman kamus.

Item dengan nilai 40 atau lebih memiliki nilai 'tua' sedangkan yang lainnya memiliki nilai 'muda'.

Pemahaman Kamus Bersarang

Kita dapat menambahkan pemahaman kamus ke pemahaman kamus itu sendiri untuk membuat kamus bertingkat. Mari kita lihat contohnya.

Contoh 7: Kamus Bersarang dengan Dua Pemahaman Kamus

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

Keluaran

 (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

Meskipun pemahaman kamus sangat bagus untuk menulis kode elegan yang mudah dibaca, mereka tidak selalu merupakan pilihan yang tepat.

Kita harus berhati-hati saat menggunakannya sebagai:

  • Mereka terkadang dapat membuat kode berjalan lebih lambat dan menghabiskan lebih banyak memori.
  • Mereka juga dapat menurunkan keterbacaan kode.

Kita tidak boleh mencoba memasukkan logika yang sulit atau pemahaman kamus dalam jumlah besar di dalamnya hanya untuk membuat kode satu baris. Dalam kasus ini, lebih baik memilih alternatif lain seperti loop.

Artikel yang menarik...