Python

Python defaultdict

Python defaultdict

Python menawarkan banyak struktur data bawaan, seperti daftar, tupel, dan kamus, untuk menyimpan dan mengelola data secara efisien. Kamus menyediakan cara mudah untuk menyimpan data sebagai pasangan nilai kunci. Kunci bertindak sebagai indeks dan digunakan untuk mengambil data. Kunci harus unik dan tidak dapat diubah di seluruh kamus. Kunci sebagian besar adalah string dan bilangan bulat, meskipun nilai kunci dapat berupa jenis apa pun, seperti bilangan bulat, string, bilangan titik-mengambang, atau bilangan kompleks. Sementara itu, kamus dapat berisi kumpulan, seperti daftar, tupel, atau beberapa jenis kamus lainnya. Kamus di Python dibuat menggunakan sepasang kurung kurawal, di mana setiap pasangan nilai kunci dipisahkan dengan koma.

Bagaimana jika Anda mencoba mengakses atau memodifikasi kunci tertentu dalam kamus yang tidak ada?? Nah, dalam hal ini, interpreter Python akan memunculkan error “KeyError” dan menghentikan eksekusi program.

Mari kita lihat contoh kesalahan "KeyError".

#membuat kamus
my_dict= 1:"Halo",2:"Selamat datang",3:"LinuxHint"
#mengakses kunci yang tidak ada
my_dict[4]

Keluaran

Untuk menangani kesalahan ini, Python menyediakan tipe defaultdict, kelas kamus yang dapat ditemukan di modul koleksi. Artikel ini membahas defaultdict Python secara detail.

Penjelasan dan Contoh Defaultdict

Defaultdict adalah alternatif dari kamus Python. Ini mengembalikan objek tipe kamus. Defaultdict adalah subclass dari dict. Dalam kasus kunci yang hilang, alih-alih memunculkan kesalahan "KeyError", nilai default diberikan untuk kunci yang tidak ada. Sintaks dari defaultdict adalah sebagai berikut:

defaultdict(default_factory)

Fungsi defaultdict mengambil parameter default_factory sebagai argumen. Fungsi default_factory mengembalikan nilai default untuk defaultdict yang ditentukan. Jika kami mencoba mengakses atau mengubah kunci yang hilang, maka fungsi default_factory mengembalikan nilai default sebagai hasilnya. Jika fungsi default_factory hilang, maka defaultdic akan memunculkan kesalahan “KeyError” jika ada kunci yang hilang.

Pertama, kami akan menerapkan defaultdic dalam skrip Python kami untuk mengakses kunci yang ada dan yang hilang.

#import defaultdict dari modul koleksi
dari koleksi impor defaultdict
#mendefinisikan fungsi untuk mengembalikan nilai default
def my_func():
print("Kunci tidak ditentukan")
#membuat diksi default
#melewati my_func() sebagai argumen ke defaultdict
my_dict =defaultdict(my_func)
#mendefinisikan kunci dan nilai
my_dict[1]="Halo"
my_dict[2]="Selamat datang"
my_dict[3]="LinuxHint"
#mengakses nilai menggunakan kunci
cetak(my_dict[1])
cetak(my_dict[2])
cetak(my_dict[3])
#mengakses kunci yang hilang atau tidak ditentukan
saya_dict[4]

Keluaran

[4] adalah kunci yang hilang. Jadi, alih-alih memunculkan kesalahan "KeyError", itu memanggil fungsi default_factory, yang mengembalikan nilai default.


Fungsi lambda, yang dikenal sebagai fungsi anonim, juga dapat digunakan sebagai parameter default_factory.

Selanjutnya, kita akan mengimplementasikan fungsi lambda dan meneruskannya sebagai argumen ke defaultdict.

#import defaultdict dari modul koleksi
dari koleksi impor defaultdict
#membuat diksi default
#melewati fungsi Lamnda sebagai argumen ke defaultdict
my_dict =defaultdict(lambda:"Kunci tidak ditentukan")
#mendefinisikan kunci dan nilai
my_dict[1]="Halo"
my_dict[2]="Selamat datang"
my_dict[3]="LinuxHint"
#mengakses nilai menggunakan kunci
cetak(my_dict[1])
cetak(my_dict[2])
cetak(my_dict[3])
#mengakses kunci yang hilang atau tidak ditentukan
cetak(my_dict[4])

defaultdict memanggil default_factory untuk memberikan nilai default, tetapi fungsi __missing()__ memberikan nilai default. Fungsi __missing()__ adalah fungsi bawaan dalam Python yang menggunakan parameter default_factory sebagai argumen. Jika parameter default_factory tidak ditentukan, fungsi __missing()__ memunculkan kesalahan “KeyError”.

Di sini, kita akan menggunakan fungsi __missing()__ dalam skrip Python kita.

#import defaultdict dari modul koleksi
dari koleksi impor defaultdict
#mendefinisikan fungsi untuk mengembalikan nilai default
def my_func():
print("Kunci tidak ditentukan")
#membuat diksi default
#melewati my_func() sebagai argumen ke defaultdict
my_dict =defaultdict(my_func)
#mendefinisikan kunci dan nilai
my_dict[1]="LinuxHint"
#mengakses nilai menggunakan kunci
cetak(my_dict[1])
#mengakses kunci yang hilang atau tidak ditentukan
my_dict.__hilang__(2)

Keluaran

Daftar dan kelas int juga dapat digunakan sebagai parameter default_factory dengan defaultdict.

Daftar sebagai default_factory Parameter

Defaultdict dibuat dengan nilai daftar ketika kelas daftar dilewatkan dengan parameter default_factory.

#import defaultdict dari modul koleksi
dari koleksi impor defaultdict
# mendefinisikan defaultdict
# melewati kelas daftar sebagai default_factory
my_dict = defaultdict(daftar)
untuk saya dalam rentang (7):
saya_dict[i].tambahkan (i)
#mencetak nilai
cetak(my_dict)

Keluaran

Output menunjukkan nilai-nilai dalam daftar. Seperti yang Anda lihat, dict default yang berisi kunci dan nilai telah dibuat.

Bilangan bulat sebagai Parameter default_factory

Jika kita melewatkan kelas int sebagai parameter default_factory, maka kita dapat membuat defaultdict yang hanya berisi bilangan bulat. Kami akan membuat daftar bilangan bulat dan kemudian menyimpannya ke defaultdict.

#import defaultdict dari modul koleksi
dari koleksi impor defaultdict
# mendefinisikan defaultdict
# melewati kelas int sebagai default_factory
my_dict = defaultdict(int)
#membuat daftar bilangan bulat
daftar_saya=[1,2,3]
untuk saya di my_list:
my_dict[i]+=1
#mencetak nilai
cetak(my_dict)

Keluaran

Dalam output yang diberikan, nilai integer sebelum titik dua (:) adalah kunci, sedangkan nilai integer setelah titik dua adalah nilai.

Kesimpulan

dafualtdict adalah kelas seperti kamus yang ada di modul koleksi. Ini berfungsi seperti kamus Python tetapi tidak memunculkan "KeyError" ketika kunci tidak ditemukan. Artikel ini menjelaskan defaultdict secara rinci dengan berbagai contoh.

5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...
Cara Menginstal League Of Legends di Ubuntu 14.04
Jika Anda adalah penggemar League of Legends, maka ini adalah kesempatan bagi Anda untuk menguji coba League of Legends. Perhatikan bahwa LOL didukung...