0Pricing
Python Academy · Pelajaran

defaultdict

Inisialisasi nilai dictionary secara otomatis

defaultdict adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Masalah kunci yang hilang

Dengan dict biasa, mengakses kunci yang tidak ada akan memunculkan KeyError. Hal ini merepotkan saat Anda ingin membangun nilai secara bertahap.

d = {}
try:
    d['x'].append(1)
except KeyError as e:
    print('KeyError:', e)

Memperkenalkan kamus bawaan

defaultdict dari collections menerima fungsi pembuat yang menghasilkan nilai bawaan untuk setiap kunci yang hilang. Impor dengan from collections import defaultdict.

from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))

Menghitung dengan bilangan bulat

Dengan defaultdict(int), kunci yang hilang secara bawaan bernilai 0, sehingga Anda dapat menambah nilainya tanpa memeriksanya terlebih dahulu.

from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
    counts[ch] += 1
print(dict(counts))

Mengelompokkan dengan daftar

defaultdict(list) membuat daftar kosong untuk kunci baru, sehingga cocok untuk mengelompokkan elemen ke dalam kelompok.

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) jika Anda menginginkan nilai unik untuk setiap kunci. Nilai duplikat akan dihapus secara otomatis.

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 pembuat harus dapat dipanggil

Argumen tersebut adalah objek yang dapat dipanggil, tidak menerima argumen, dan mengembalikan nilai bawaan. int, list, set, dan dict semuanya dapat digunakan karena saat dipanggil menghasilkan nilai kosong.

from collections import defaultdict
print(int())
print(list())
print(set())

Nilai bawaan khusus dengan lambda

Anda dapat memberikan objek apa pun yang dapat dipanggil tanpa argumen, seperti lambda, untuk mengembalikan nilai bawaan khusus.

from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))

Kamus bawaan bertingkat

Sebuah fungsi pembuat juga dapat membuat defaultdict, sehingga Anda dapat membangun struktur bertingkat tanpa penyiapan 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'])

Mengakses akan membuat kunci

Perhatikan: sekadar membaca kunci yang hilang akan menyisipkannya dengan nilai bawaan. Setelah diakses, kunci tersebut ada di dalam kamus.

from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))

Memeriksa tanpa menyisipkan

Untuk memeriksa kunci tanpa membuatnya, gunakan metode .get() atau operator in, yang tidak pernah memicu fungsi pembuat.

from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))

Mengonversi kembali menjadi kamus

Bungkus defaultdict dengan dict() saat Anda menginginkan kamus biasa, misalnya sebelum mengembalikannya dari fungsi atau mencetaknya dengan rapi.

from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)

Pemeriksaan Cepat

Apa yang diwakili oleh argumen yang diteruskan ke defaultdict?

Ringkasan: Kamus bawaan

Poin-poin penting:

  • defaultdict(factory) secara otomatis membuat nilai untuk kunci yang hilang.
  • int menghasilkan 0 (penghitungan), list menghasilkan [] (pengelompokan), dan set menghasilkan himpunan kosong (pengelompokan unik).
  • Fungsi pembuat dapat berupa objek apa pun yang dapat dipanggil tanpa argumen, termasuk lambda.
  • Membaca kunci yang hilang akan menyisipkannya; gunakan .get() atau in untuk memeriksanya dengan aman.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))

Pertanyaan yang Sering Diajukan

Apakah pelajaran “defaultdict” gratis?

Ya — teks lengkap “defaultdict” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “defaultdict”?

Inisialisasi nilai dictionary secara otomatis Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “defaultdict” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple dan OrderedDict
← Kembali ke Python Academy