Tham số cho hàm tạo defaultdict là hàm sẽ được gọi để xây dựng các phần tử mới. Vì vậy, hãy sử dụng lambda!
>>> from collections import defaultdict
>>> d = defaultdict(lambda : defaultdict(int))
>>> print d[0]
defaultdict(<type 'int'>, {})
>>> print d[0]["x"]
0
Kể từ Python 2.7, có một giải pháp thậm chí tốt hơn bằng cách sử dụng Counter :
>>> from collections import Counter
>>> c = Counter()
>>> c["goodbye"]+=1
>>> c["and thank you"]=42
>>> c["for the fish"]-=5
>>> c
Counter({'and thank you': 42, 'goodbye': 1, 'for the fish': -5})
Một số tính năng thưởng
>>> c.most_common()[:2]
[('and thank you', 42), ('goodbye', 1)]
Để biết thêm thông tin, hãy xem PyMOTW - Bộ sưu tập - Kiểu dữ liệu chứa và Tài liệu Python - bộ sưu tập