Nhảy đến nội dung chính

defaultdict

defaultdict là một lớp trong module collections, giống như dict, nhưng khi bạn truy cập một key không tồn tại, thay vì báo lỗi KeyError, nó sẽ tự động tạo một giá trị mặc định cho bạn.

from collections import defaultdict

d = defaultdict(int)  # mặc định mỗi key sẽ có giá trị là 0
d["a"] += 1
d["b"] += 2
print(d)  # 👉 {'a': 1, 'b': 2}

Nếu bạn dùng dict bình thường thì d["a"] += 1 sẽ lỗi nếu "a" chưa tồn tại. Nhưng với defaultdict, nó sẽ tạo "a": 0 trước, rồi mới +1.

Dùng list làm mặc định

d = defaultdict(list)

d["fruits"].append("apple")
d["fruits"].append("banana")
print(d)  # 👉 {'fruits': ['apple', 'banana']}

Tự động tạo [] nếu key chưa tồn tại — rất tiện khi nhóm dữ liệu.

Dùng set làm mặc định

d = defaultdict(set)

d["numbers"].add(1)
d["numbers"].add(2)
print(d)  # 👉 {'numbers': {1, 2}}

Tự định nghĩa hàm mặc định

def default_name():
    return "unknown"

d = defaultdict(default_name)
print(d["name"])  # 👉 'unknown'