PYTHON

Group Data Efficiently with Python defaultdict

Discover how to use Python's collections.defaultdict to effortlessly group items by a common key, simplifying data aggregation and avoiding KeyError exceptions.

from collections import defaultdict

def group_users_by_role(user_data):
    """
    Groups users by their role using defaultdict.
    """
    users_by_role = defaultdict(list)
    for user in user_data:
        users_by_role[user['role']].append(user['name'])
    return dict(users_by_role) # Convert back to a regular dict for final output if needed

def group_products_by_category(product_list):
    """
    Groups products by their category, counting items using defaultdict.
    """
    products_count_by_category = defaultdict(int)
    for product in product_list:
        products_count_by_category[product['category']] += 1
    return dict(products_count_by_category)

# Example usage for a web application scenario
users = [
    {'name': 'Alice', 'role': 'admin'},
    {'name': 'Bob', 'role': 'editor'},
    {'name': 'Charlie', 'role': 'admin'},
    {'name': 'David', 'role': 'viewer'}
]
grouped_users = group_users_by_role(users)
print("Users by role:", grouped_users)

products = [
    {'id': 1, 'name': 'Laptop', 'category': 'Electronics'},
    {'id': 2, 'name': 'Mouse', 'category': 'Electronics'},
    {'id': 3, 'name': 'Book A', 'category': 'Books'},
    {'id': 4, 'name': 'Shirt', 'category': 'Apparel'},
    {'id': 5, 'name': 'Book B', 'category': 'Books'},
]
grouped_products_count = group_products_by_category(products)
print("Product count by category:", grouped_products_count)
How it works: `collections.defaultdict` simplifies dictionary operations by providing a default value for a new key when accessed. This is extremely useful for grouping items or accumulating data without needing to explicitly check if a key exists before appending or incrementing, making the code cleaner and less error-prone in web development contexts.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs