Python

Keputusan lalai Python

Keputusan lalai Python

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 kamus
my_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 koleksi
dari 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 koleksi
dari 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 koleksi
dari 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 koleksi
dari 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 koleksi
dari 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.

Battle For Wesnoth 1.13.6 Pembangunan Dikeluarkan
Battle For Wesnoth 1.13.6 dilancarkan bulan lalu, adalah rilis pengembangan keenam di 1.13.siri x dan memberikan sejumlah penambahbaikan, terutamanya ...
Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...
Pasang permainan Strategi OpenRA terkini di Ubuntu Linux
OpenRA adalah mesin permainan Strategi Masa Nyata / Bebas yang mencipta semula permainan Westwood awal seperti Command & Conquer klasik: Makluman Mera...