PYTHON
Grouping Items by a Common Key with defaultdict
Efficiently group a list of dictionaries or objects by a specified key into a dictionary of lists using Python's `collections.defaultdict` for clean, concise code.
from collections import defaultdict
data = [
{'category': 'fruit', 'item': 'apple'},
{'category': 'vegetable', 'item': 'carrot'},
{'category': 'fruit', 'item': 'banana'},
{'category': 'dairy', 'item': 'milk'},
{'category': 'vegetable', 'item': 'broccoli'},
]
# Grouping items by 'category'
grouped_by_category = defaultdict(list)
for entry in data:
grouped_by_category[entry['category']].append(entry['item'])
print(f"Grouped Data: {dict(grouped_by_category)}")
# Example with a function to demonstrate reusability
def group_by_key(items, key_name):
grouped = defaultdict(list)
for item in items:
grouped[item[key_name]].append(item)
return dict(grouped)
grouped_full_items = group_by_key(data, 'category')
print(f"Grouped Full Items: {grouped_full_items}")
How it works: This snippet demonstrates how to group a list of dictionaries by a common key using `collections.defaultdict`. When a new key is accessed in a `defaultdict(list)`, it automatically creates an empty list for that key, simplifying the logic compared to checking `if key not in dict` manually. This is highly useful for organizing and aggregating structured data.