Apabila mencari nilai dalam kamus, jika kunci tidak wujud, ralat keyerror akan dikembalikan dan bukannya nilai lalai. anda boleh menggunakan
defaultdict
Fungsi. Defaultdict ialah subkelas kelas dict terbina dalam Python Ia mempunyai fungsi yang sama seperti dict, tetapi ia mempunyai nilai lalai Jika nilai kunci tidak wujud, ia mengembalikan nilai lalai.
dict =defaultdict( factory_function)
defaultdict
boleh menerima fungsi kilang sebagai parameter, di mana factory_function
boleh menjadi senarai, set, str, dll., yang berfungsi apabila ket tidak wujud Apabila, kembalikan nilai lalai bagi fungsi kilang, seperti senarai yang sepadan dengan [], str sepadan dengan rentetan kosong, tetapkan sepadan dengan set(), dan int sepadan dengan 0.
Penggunaan biasa dict adalah seperti berikut:
l=['A','B','C','D'] di={} for i in l: print(i) # 'A di[i]+=1 # KeyError: 'A' print(di)
Gunakan defaultdict()
from collections import defaultdict dict1 = defaultdict(int) dict2 = defaultdict(set) dict3 = defaultdict(str) dict4 = defaultdict(list) dict4[1] = 666 dict4[2] = 888 print(dict1[0]) # 0 print(dict2[0]) # set() print(dict3[0]) # print(dict4[0]) # [] print(dict4[1]) # 666 print("*" * 30) print(dict1) # defaultdict(<class 'int'>, {0: 0}) print(dict2) # defaultdict(<class 'set'>, {0: set()}) print(dict3) # defaultdict(<class 'str'>, {0: ''}) print(dict4) # defaultdict(<class 'list'>, {1: 666, 2: 888, 0: []})
Kaedah dict.setdefault() mempunyai dua parameter, yang pertama ialah parameter, yang kedua ialah nilai lalai
lst = ['A', 'B', 'C', 'D', 'e'] dic = {} for i in lst: dic.setdefault(i, 0) dic[i] += 1 print(dic)# {'A': 1, 'B': 1, 'C': 1, 'D': 1, 'e': 1}
setdefault() ialah kaedah contoh kamus, menerima dua parameter penggunaannya serupa dengan kaedah get() kamus, tetapi ia lebih berkuasa daripada get(). kaedah. Kedua-duanya menetapkan nilai lalai untuk kunci kamus.
Perbezaan antara keduanya ialah: nilai lalai yang ditetapkan oleh kaedah get tidak akan mengubah kamus asal, manakala nilai lalai yang ditetapkan oleh setdefault akan mengubah nilai kamus asal.
Nota: Apabila menggunakan dict[key]=value, ralat akan dilaporkan jika kunci tidak wujud apabila menggunakan dict.get(key), jika kunci tidak wujud, nilai lalai nilai akan dikembalikan.
dic1 = {"A": "a", "B": "b"} x = dic1.get("E", "e") print(x) # e print(dic1) # {'A': 'a', 'B': 'b'} dic2 = {"C": "c", "D": "d"} y = dic2.setdefault("E", 'e') print(y) # e print(dic2) # {'C': 'c', 'D': 'd', 'E': 'e'}
defaultdict ialah fungsi kilang di bawah modul koleksi Ia digunakan untuk membina objek kamus dan menerima objek fungsi (boleh dipanggil) sebagai parameter. Apakah jenis yang dikembalikan oleh parameter, dan jenis apakah nilai yang sepadan dengan kunci.
from collections import defaultdict lst = [("A", "1"), ("B", "1"), ("A", "2"), ("B", "2"), ("A", "3"), ("B", "3")] dic = defaultdict(list) print(dic) for key, value in lst: dic[key].append(value) print(dic) print(type(dic)) for key, value in dic.items(): print(key, value)
Atas ialah kandungan terperinci Bagaimana untuk menetapkan nilai lalai menggunakan defaultdict dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!