defaultdict
Mulakan nilai kamus secara automatik
defaultdict ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Masalah kunci yang tiada
Dengan dict biasa, mengakses kunci yang tidak wujud menimbulkan KeyError. Ini menyusahkan apabila Anda mahu membina nilai secara berperingkat.
d = {}
try:
d['x'].append(1)
except KeyError as e:
print('KeyError:', e)Memperkenalkan kamus lalai
defaultdict daripada collections menerima fungsi kilang yang menghasilkan nilai lalai untuk setiap kunci yang tiada. Importnya dengan from collections import defaultdict.
from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))Mengira dengan integer
Dengan defaultdict(int), kunci yang tiada secara lalai bernilai 0, jadi Anda boleh menambah nilainya tanpa menyemaknya terlebih dahulu.
from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
counts[ch] += 1
print(dict(counts))Mengumpulkan dengan senarai
defaultdict(list) mencipta senarai kosong untuk kunci baharu, sesuai untuk mengumpulkan item ke dalam kumpulan.
from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
groups[w[0]].append(w)
print(dict(groups))Mengumpulkan dengan himpunan
Gunakan defaultdict(set) apabila Anda mahu nilai unik bagi setiap kunci. Pendua digugurkan secara automatik.
from collections import defaultdict
seen = defaultdict(set)
pairs = [('a', 1), ('a', 1), ('a', 2), ('b', 3)]
for k, v in pairs:
seen[k].add(v)
print(dict(seen))Fungsi kilang mestilah boleh dipanggil
Argumen itu ialah sesuatu yang boleh dipanggil, tidak menerima sebarang argumen dan mengembalikan nilai lalai. int, list, set dan dict semuanya berfungsi kerana panggilan terhadapnya mengembalikan nilai kosong.
from collections import defaultdict
print(int())
print(list())
print(set())Nilai lalai tersuai dengan lambda
Anda boleh memberikan sesuatu yang boleh dipanggil tanpa argumen, seperti lambda, untuk mengembalikan nilai lalai tersuai.
from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))Kamus lalai bersarang
Fungsi kilang itu sendiri boleh mencipta defaultdict, membolehkan Anda membina struktur bersarang tanpa persediaan manual.
from collections import defaultdict
table = defaultdict(lambda: defaultdict(int))
table['fruit']['apples'] += 3
table['fruit']['pears'] += 2
print(table['fruit']['apples'])
print(table['fruit']['pears'])Capaian mencipta kunci
Beri perhatian: sekadar membaca kunci yang tiada akan memasukkannya dengan nilai lalai. Selepas diakses, kunci itu wujud dalam kamus.
from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))Menyemak tanpa memasukkan
Untuk menyemak kunci tanpa menciptanya, gunakan kaedah .get() atau operator in, yang tidak pernah mencetuskan fungsi kilang.
from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))Menukar semula kepada kamus
Balut defaultdict dalam dict() apabila Anda mahukan kamus biasa, contohnya sebelum mengembalikannya daripada fungsi atau mencetaknya dengan kemas.
from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)Semakan Pantas
Apakah yang diwakili oleh argumen yang diberikan kepada kamus lalai?
Rumusan: Kamus lalai
Perkara penting:
defaultdict(factory)mencipta nilai secara automatik untuk kunci yang tiada.intmemberikan 0 (pengiraan),listmemberikan [] (pengumpulan), dansetmemberikan himpunan kosong (pengumpulan unik).- Fungsi kilang boleh berupa apa-apa yang boleh dipanggil tanpa argumen, termasuk
lambda. - Membaca kunci yang tiada akan memasukkannya; gunakan
.get()atauinuntuk menyemaknya dengan selamat.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
g[w[0]].append(w)
print(dict(g))Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 320
Soalan Lazim
Adakah pelajaran “defaultdict” percuma?
Ya — teks penuh “defaultdict” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “defaultdict”?
Mulakan nilai kamus secara automatik Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Python Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “defaultdict” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Counter
- defaultdict
- deque
- namedtuple dan OrderedDict