Apa itu defaultdict
defaultdict adalah kamus khusus yang tersedia di modul Python collections. Ini merupakan perluasan dari kelas dict
bawaan yang memudahkan penanganan kunci yang hilang dengan menyediakan nilai default untuk kunci tersebut. Alih-alih menimbulkan KeyError ketika kunci tidak ditemukan, defaultdict secara otomatis membuat kunci dengan nilai default yang ditentukan oleh suatu fungsi yang disebut default factory.
Memahami Default Factories
Menggunakan Fungsi Bawaan sebagai Default Factories
Default factory bisa berupa callable apa saja yang tidak mengambil argumen dan mengembalikan sebuah nilai. Python menyediakan beberapa fungsi bawaan yang dapat digunakan sebagai default factories, seperti list
, int
, dan set
. Fungsi-fungsi ini membuat daftar kosong, bilangan bulat yang diinisialisasi dengan nol, dan set kosong, masing-masing.
Membuat Custom Default Factories
Anda juga bisa membuat default factories khusus dengan mendefinisikan fungsi Anda sendiri atau menggunakan ekspresi lambda. Ini memungkinkan Anda menyesuaikan nilai default untuk kasus penggunaan tertentu.
Membuat defaultdict
Mengimpor Kelas defaultdict
Untuk menggunakan defaultdict, Anda perlu mengimpornya dari modul collections
:
from collections import defaultdict
Menginisialisasi defaultdict
Setelah diimpor, Anda dapat membuat defaultdict dengan melewati default factory sebagai argumen:
dd = defaultdict(list)
Kasus Penggunaan defaultdict yang Umum
Menghitung Elemen
Defaultdict dengan default factory int
cocok untuk menghitung kemunculan elemen dalam urutan:
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
word_counts = defaultdict(int)
for word in words:
word_counts[word] += 1
Mengelompokkan Elemen
Defaultdict dengan default factory list
dapat digunakan untuk mengelompokkan elemen berdasarkan atribut tertentu:
students = [
{"name": "Alice", "age": 24},
{"name": "Bob", "age": 22},
{"name": "Charlie", "age": 24},
{"name": "David", "age": 22},
]
students_by_age = defaultdict(list)
for student in students:
students_by_age[student["age"]].append(student)
defaultdict bertingkat
Anda dapat menggunakan defaultdict bertingkat untuk membuat kamus multi-level dengan nilai default di setiap level:
nested_dd = defaultdict(lambda: defaultdict(int))
Menggabungkan defaultdicts
Untuk menggabungkan dua defaultdict dengan default factory yang sama, Anda bisa menggunakan loop untuk memperbarui nilai-nilainya:
dd1 = defaultdict(int, {"a": 1, "b": 2})
dd2 = defaultdict(int, {"b": 3, "c": 4})
for key, value in dd2.items():
dd1[key] += value
defaultdict dengan Fungsi lambda
Menggunakan fungsi lambda sebagai default factory memungkinkan Anda membuat defaultdict yang lebih fleksibel:
# Create a defaultdict with a default value of 1
dd = defaultdict(lambda: 1)
Membandingkan defaultdict dengan dict
Perbedaan Utama
Perbedaan utama antara defaultdict dan dict
adalah perilaku ketika kunci tidak ditemukan. defaultdict secara otomatis membuat kunci dengan nilai default, sedangkan dict
menimbulkan KeyError.
Dampak Kinerja
Menggunakan defaultdict dapat meningkatkan kinerja kode Anda dengan menghilangkan kebutuhan untuk pemeriksaan keberadaan kunci secara eksplisit dan penanganan pengecualian saat bekerja dengan kamus.
Referensi