Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menetapkan nilai lalai menggunakan defaultdict dalam Python?

Bagaimana untuk menetapkan nilai lalai menggunakan defaultdict dalam Python?

WBOY
Lepaskan: 2023-04-26 17:07:09
ke hadapan
1338 orang telah melayarinya

Kata Pengantar

Apabila mencari nilai dalam kamus, jika kunci tidak wujud, ralat keyerror akan dikembalikan dan bukannya nilai lalai. anda boleh menggunakan defaultdictFungsi. 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.

Sintaks

dict =defaultdict( factory_function)
Salin selepas log masuk

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)
Salin selepas log masuk

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 &#39;int&#39;>, {0: 0})
print(dict2) # defaultdict(<class &#39;set&#39;>, {0: set()})
print(dict3) # defaultdict(<class &#39;str&#39;>, {0: &#39;&#39;})
print(dict4) # defaultdict(<class &#39;list&#39;>, {1: 666, 2: 888, 0: []})
Salin selepas log masuk

setdefault( ) dan defaultdict Perbezaan antara ()

Kaedah dict.setdefault() mempunyai dua parameter, yang pertama ialah parameter, yang kedua ialah nilai lalai

lst = [&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;e&#39;]
dic = {}
 
for i in lst:
    dic.setdefault(i, 0)
    dic[i] += 1
print(dic)# {&#39;A&#39;: 1, &#39;B&#39;: 1, &#39;C&#39;: 1, &#39;D&#39;: 1, &#39;e&#39;: 1}
Salin selepas log masuk

setdefault( )

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) # {&#39;A&#39;: &#39;a&#39;, &#39;B&#39;: &#39;b&#39;}
 
dic2 = {"C": "c", "D": "d"}
y = dic2.setdefault("E", &#39;e&#39;)
print(y) # e
print(dic2) # {&#39;C&#39;: &#39;c&#39;, &#39;D&#39;: &#39;d&#39;, &#39;E&#39;: &#39;e&#39;}
Salin selepas log masuk

defaultdict()

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)
Salin selepas log masuk

Bagaimana untuk menetapkan nilai lalai menggunakan defaultdict dalam Python?

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan