When working with dictionaries in Python, it is common to encounter situations where the dictionary's structure is unknown or may contain missing keys. Python's collections module provides a useful class called "defaultdict," which provides a convenient way to handle such scenarios. In this article, we will explore the defaultdict class and learn how it can be used to work with dictionaries of unknown structure.
-
Understanding defaultdict: The defaultdict class is a subclass of the built-in dict class in Python. It overrides one method, missing(), which allows it to define a default value for non-existent keys.
-
Basic Usage of defaultdict:
-
Example 1: Creating a defaultdict with default value as 0
from collections import defaultdict
d = defaultdict(int)
print(d["key"]) # Output: 0
-
Example 2: Creating a defaultdict with default value as an empty list
from collections import defaultdict d = defaultdict(list)
print(d["key"]) # Output: []
-
-
Handling Missing Keys: Unlike the regular dict class, when using a defaultdict, accessing a non-existent key returns the default value specified during initialization, rather than raising a KeyError.
-
Working with Dictionaries of Unknown Structure:
-
Example 1: Counting occurrences of items in a list using a defaultdict
from collections import defaultdict items = ["apple", "banana", "apple", "orange", "banana", "apple"]
counts = defaultdict(int)
for item in items:
counts[item] += 1
print(counts) # Output: defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1}) -
Example 2: Grouping items by a common attribute using a defaultdict of lists
from collections import defaultdictclass Person:def __init__(self, name, age):self.name = nameself.age = age people = [Person("Alice", 25),Person("Bob", 30),Person("Alice", 35),Person("Bob", 28), ] grouped_people = defaultdict(list)for person in people:grouped_people[person.name].append(person)print(grouped_people["Alice"])# Output: [Person(name='Alice', age=25), Person(name='Alice', age=35)]print(grouped_people["Bob"])# Output: [Person(name='Bob', age=30), Person(name='Bob', age=28)]
-
Conclusion: The defaultdict class in Python's collections module is a handy tool for working with dictionaries of unknown structure or dictionaries that may contain missing keys. By providing a default value for non-existent keys, defaultdict simplifies handling missing keys and avoids KeyError exceptions. Whether you need to count occurrences, group items, or perform other operations on dictionaries with unknown structure, defaultdict offers a convenient and efficient solution. Incorporate defaultdict into your Python projects, and leverage its capabilities to work with dictionaries in a more flexible and robust manner.