defaultdict(set) is a special data structure from Python’s collections module that creates a dictionary with default values as sets.
1. Introduction to defaultdict
defaultdictis a variant of a regular dictionary in Python, provided by thecollectionsmodule.- When you try to access a non-existent key, it won’t raise a
KeyError; instead, it will automatically create a default value for that key. - The default value is provided by the
default_factoryparameter, such aslist,int,set, etc.
2. Using defaultdict(set)
Definition
defaultdict(set) creates a dictionary where the default value is an empty set.
How it works
- When you try to access a key that doesn’t exist,
defaultdictwill automatically create an empty set for that key and set it as the default value. - This is different from a regular dictionary, where accessing a non-existent key would raise a
KeyError.
3. Example Code
from collections import defaultdict
# Create a defaultdict with default values as empty sets
d = defaultdict(set)
# Add elements
d['a'].add(1) # Automatically creates an empty set for 'a' and adds 1
d['a'].add(2)
d['b'].add(3) # Automatically creates an empty set for 'b' and adds 3
print(d) # Output: defaultdict(<class 'set'>, {'a': {1, 2}, 'b': {3}})
# Access a non-existent key
print(d['c']) # Output: set()
4. When to Use defaultdict(set)
defaultdict(set) is useful in the following scenarios:
1. Adjacency List Representation for Graphs
In graph algorithms, adjacency lists are commonly used to represent graph edges. Using defaultdict(set) makes it easy to build directed or undirected graphs.
from collections import defaultdict
graph = defaultdict(set)
edges = [(1, 2), (2, 3), (3, 4), (4, 1)]
for u, v in edges:
graph[u].add(v)
graph[v].add(u) # For an undirected graph
print(graph)
# Output: defaultdict(<class 'set'>, {1: {2, 4}, 2: {1, 3}, 3: {2, 4}, 4: {1, 3}})
2. Grouping or Associating Elements
For example, if you need to group elements under a key, you can use defaultdict(set) to automatically create an empty set and add related elements.
from collections import defaultdict
d = defaultdict(set)
data = [('apple', 'fruit'), ('carrot', 'vegetable'), ('banana', 'fruit')]
for item, category in data:
d[category].add(item)
print(d)
# Output: defaultdict(<class 'set'>, {'fruit': {'apple', 'banana'}, 'vegetable': {'carrot'}})
5. defaultdict(set) vs. Regular dict
| Feature | defaultdict(set) |
Regular dict |
|---|---|---|
| Default value | Automatically creates an empty set | Raises KeyError when accessing a non-existent key |
| Use case | Ideal when you need to initialize sets automatically | Requires manual initialization of key values |
| Common scenarios | Adjacency lists, grouping elements, tracking associations | Storing and retrieving key-value pairs |
Summary: defaultdict(set) is a concise and convenient way to automatically create sets when handling dictionaries, avoiding manual checks for key existence, making the code more clean and readable.
Leave a Reply