Traffine I/O

Bahasa Indonesia

2023-03-31

defaultdict di Python

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:

python
from collections import defaultdict

Menginisialisasi defaultdict

Setelah diimpor, Anda dapat membuat defaultdict dengan melewati default factory sebagai argumen:

python
dd = defaultdict(list)

Kasus Penggunaan defaultdict yang Umum

Menghitung Elemen

Defaultdict dengan default factory int cocok untuk menghitung kemunculan elemen dalam urutan:

python
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:

python
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:

python
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:

python
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:

python
# 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

https://www.geeksforgeeks.org/defaultdict-in-python/
https://docs.python.org/3/library/collections.html

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!