Python menawarkan banyak struktur data terbina dalam, seperti senarai, tupel, dan kamus, untuk menyimpan dan mengurus data dengan cekap. Kamus menyediakan cara mudah untuk menyimpan data sebagai pasangan nilai-kunci. Kunci berfungsi sebagai indeks dan digunakan untuk mengambil data. Kunci harus unik dan tidak berubah sepanjang kamus. Kunci kebanyakannya adalah rentetan dan bilangan bulat, walaupun nilai kunci boleh menjadi jenis apa pun, seperti bilangan bulat, tali, nombor titik terapung, atau nombor kompleks. Sementara itu, kamus boleh mengandungi koleksi, seperti senarai, tuple, atau beberapa jenis kamus lain. Kamus dalam Python dibuat menggunakan sepasang kurungan keriting, di mana setiap pasangan nilai-kunci dipisahkan dengan koma.
Bagaimana jika anda cuba mengakses atau mengubah kunci tertentu dalam kamus yang tidak ada? Baiklah, dalam kes ini, jurubahasa Python akan meningkatkan kesalahan "KeyError" dan menghentikan pelaksanaan program.
Mari kita lihat contoh ralat "KeyError".
#membuat kamusmy_dict = 1: "Hello", 2: "Selamat datang", 3: "LinuxHint"
#mengakses kunci yang tidak ada
my_dict [4]
Pengeluaran
Untuk mengatasi ralat ini, Python menyediakan jenis defaultdict, kelas kamus yang boleh didapati di modul koleksi. Artikel ini merangkumi keputusan default Python secara terperinci.
Penjelasan dan Contoh keputusan ingkar
The defaultdict adalah alternatif kamus Python. Ia mengembalikan objek jenis kamus. Defaultdict adalah subkelas dik. Sekiranya terdapat kekunci yang hilang, dan bukannya menimbulkan kesalahan "KeyError", nilai lalai diberikan untuk kunci yang tidak ada. Sintaks defaultdict adalah seperti berikut:
defaultdict (default_factory)Fungsi defaultdict mengambil parameter default_factory sebagai argumen. Fungsi default_factory mengembalikan nilai lalai untuk defaultdict yang ditentukan. Sekiranya kita cuba mengakses atau mengubah kunci yang tidak ada, maka fungsi default_factory mengembalikan nilai lalai sebagai hasilnya. Sekiranya fungsi default_factory hilang, maka defaultdic akan menimbulkan kesalahan "KeyError" jika ada kekunci yang hilang.
Pertama, kami akan melaksanakan defaultdic dalam skrip Python kami untuk mengakses kunci yang ada dan yang tidak ada.
#import defaultdict dari modul koleksidari koleksi import defaultdict
#menentukan fungsi untuk mengembalikan nilai lalai
def my_func ():
cetak ("Kunci tidak ditentukan")
#membuat defualtdict
#melewati my_func () sebagai hujah ke defaultdict
my_dict = defaultdict (my_func)
#menentukan kunci dan nilai
my_dict [1] = "Helo"
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
my_dict [4]
Pengeluaran
[4] adalah kunci yang hilang. Jadi, bukannya menimbulkan ralat "KeyError", ia memanggil fungsi default_factory, yang mengembalikan nilai lalai.
Fungsi lambda, yang dikenali sebagai fungsi tanpa nama, juga dapat digunakan sebagai parameter default_factory.
Seterusnya, kami akan melaksanakan fungsi lambda dan meneruskannya sebagai argumen ke defaultdict.
#import defaultdict dari modul koleksidari koleksi import defaultdict
#membuat defualtdict
# melepasi fungsi Lamnda sebagai argumen untuk menetapkan keputusan
my_dict = defaultdict (lambda: "Kunci tidak ditentukan")
#menentukan kunci dan nilai
my_dict [1] = "Helo"
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])
The defaultdict memanggil default_factory untuk memberikan nilai lalai, tetapi fungsi __missing () __ memberikan nilai lalai. Fungsi __missing () __ adalah fungsi bawaan di Python yang mengambil parameter default_factory sebagai argumen. Sekiranya parameter default_factory tidak ditentukan, fungsi __missing () __ menimbulkan ralat "KeyError".
Di sini, kita akan menggunakan fungsi __missing () __ dalam skrip Python kami.
#import keputusan lalai dari modul koleksidari koleksi import defaultdict
#menentukan fungsi untuk mengembalikan nilai lalai
def my_func ():
cetak ("Kunci tidak ditentukan")
#membuat defualtdict
# melepasi my_func () sebagai hujah ke defaultdict
my_dict = defaultdict (my_func)
#menentukan kunci dan nilai
my_dict [1] = "LinuxHint"
#mengakses nilai menggunakan kunci
cetak (my_dict [1])
#mengakses kunci yang hilang atau tidak ditentukan
my_dict.__missing __ (2)
Pengeluaran
Senarai dan kelas int juga boleh digunakan sebagai parameter default_factory dengan defaultdict.
Senaraikan sebagai Parameter default_factory
Defaultdict dibuat dengan nilai daftar ketika kelas senarai dilewatkan parameter default_factory.
#import defaultdict dari modul koleksidari koleksi import defaultdict
# menentukan ketetapan lalai
# lulus kelas senarai sebagai kilang_ default
my_dict = defaultdict (senarai)
untuk i dalam jarak (7):
my_dict [i].tambahkan (i)
# mencetak nilai
cetak (my_dict)
Pengeluaran
Keluaran menunjukkan nilai dalam senarai. Seperti yang anda lihat, keputusan lalai yang mengandungi kunci dan nilai telah dibuat.
Bilangan bulat sebagai Parameter default_factory
Sekiranya kita lulus kelas int sebagai parameter default_factory, maka kita dapat membuat defaultdict yang hanya mengandungi bilangan bulat. Kami akan membuat senarai bilangan bulat dan kemudian menyimpannya ke keputusan lalai.
#import defaultdict dari modul koleksidari koleksi import defaultdict
# menentukan ketetapan lalai
# lulus kelas int sebagai kilang_ default
my_dict = defaultdict (int)
#membuat senarai bilangan bulat
my_list = [1,2,3]
untuk saya dalam senarai_ saya:
my_dict [i] + = 1
# mencetak nilai
cetak (my_dict)
Pengeluaran
Dalam output yang diberikan, nilai integer sebelum titik dua (:) adalah kekunci, sementara nilai integer selepas titik dua adalah nilai.
Kesimpulannya
The dafualtdict adalah kelas seperti kamus yang terdapat dalam modul koleksi. Ia berfungsi seperti kamus Python tetapi tidak menaikkan "KeyError" apabila kunci tidak dijumpai. Artikel ini menerangkan keputusan lalai secara terperinci dengan pelbagai contoh.