Introduction
DefaultDict provides default values for missing keys, eliminating key existence checks.
Basic Usage
from collections import defaultdict
# List as default factory
dd_list = defaultdict(list)
dd_list["fruits"].append("apple")
print(dd_list["fruits"]) # ['apple']
print(dd_list["vegetables"]) # [] - empty list created
# Integer as default (counter)
dd_int = defaultdict(int)
dd_int["apples"] += 1
print(dd_int["apples"]) # 1
print(dd_int["oranges"]) # 0
Grouping with DefaultDict
from collections import defaultdict
fruits = ["apple", "banana", "apple", "cherry", "banana", "apple"]
# Group by fruit
grouped = defaultdict(list)
for fruit in fruits:
grouped[fruit].append(fruit)
# Result: {'apple': ['apple', 'apple', 'apple'], ...}
Custom Factory
from collections import defaultdict
def default_dict_factory():
return {"count": 0, "items": []}
dd_custom = defaultdict(default_dict_factory)
dd_custom["key"]["count"] += 1
Practice Problems
- Count word frequencies in text
- Group items by category
- Create nested default dictionary
- Use set as default factory
- Build adjacency list for graph