Let’s compare defaultdict(int) and defaultdict(list) by using examples that demonstrate their differences and appropriate use cases.
1. defaultdict(int) – Used for Counting Occurrences:
When you use defaultdict(int), it initializes missing keys with 0 (the default for int). This is commonly used when you need to count occurrences of elements.
Example Code for defaultdict(int):
from collections import defaultdict
# Using defaultdict(int) to count occurrences
map_n = defaultdict(int)
nums = [1, 2, 1, 3, 2, 4, 1]
# Count the frequency of each number
for n in nums:
map_n[n] += 1
# Convert defaultdict to regular dict for display purposes
print(dict(map_n))
Output for defaultdict(int):
{1: 3, 2: 2, 3: 1, 4: 1}
Explanation:
defaultdict(int): Each key that doesn’t exist is initialized to0. As you iterate throughnums, the count for each key (number) is incremented.- Example use case: Counting the frequency of elements in a list.
2. defaultdict(list) – Used for Grouping Elements:
When you use defaultdict(list), it initializes missing keys with an empty list []. This is useful for grouping or collecting multiple values under a single key.
Example Code for defaultdict(list):
from collections import defaultdict
# Using defaultdict(list) to group elements
map_n = defaultdict(list)
nums = [1, 2, 1, 3, 2, 4, 1]
# Group numbers by their value
for n in nums:
map_n[n].append(n)
# Convert defaultdict to regular dict for display purposes
print(dict(map_n))
Output for defaultdict(list):
{1: [1, 1, 1], 2: [2, 2], 3: [3], 4: [4]}
Explanation:
defaultdict(list): Each missing key is initialized to an empty list[]. As you iterate throughnums, each value is appended to the list associated with that key.- Example use case: Grouping elements (e.g., collecting all occurrences of the same element in separate lists).
Key Differences:
| Feature | defaultdict(int) |
defaultdict(list) |
|---|---|---|
| Default value | 0 (for int) |
[] (empty list) |
| Use case | Counting occurrences of elements | Grouping elements under the same key |
| Example operation | Increment the value: map_n[n] += 1 |
Append to the list: map_n[n].append(n) |
| Example result for list | {1: 3, 2: 2, 3: 1, 4: 1} |
{1: [1, 1, 1], 2: [2, 2], 3: [3], 4: [4]} |
Summary:
defaultdict(int)is best used when you want to count how many times something appears, like counting words or elements in a list.defaultdict(list)is best used when you want to collect multiple values under the same key, such as grouping elements or building an adjacency list.
Leave a Reply