Python - Group Similar Value List to Dictionary

In Python, we can group similar value lists to dictionaries using methods like for loops with conditional statements, defaultdict, and groupby from the itertools module. Grouping similar values together is useful when analyzing complex data and organizing elements by their occurrences.

Method 1: Using For Loop and Conditional Statements

The simplest method to group similar values uses a for loop and conditional statements. We initialize an empty dictionary, iterate over each item, and check if it already exists as a key ?

Syntax

groups[key].append(element)

The append() method adds an element to the end of a list, modifying the original list.

Example

def group_list_to_dict(lst):
    groups = {}
    for item in lst:
        if item in groups:
            groups[item].append(item)
        else:
            groups[item] = [item]
    return groups

my_list = [1, 2, 3, 2, 4, 1, 5, 4, 3]
result = group_list_to_dict(my_list)
print(result)
{1: [1, 1], 2: [2, 2], 3: [3, 3], 4: [4, 4], 5: [5]}

Method 2: Using defaultdict from Collections Module

The defaultdict class automatically initializes a default value for any key that doesn't exist, eliminating the need for conditional checks ?

Syntax

from collections import defaultdict
groups = defaultdict(list)
groups[item].append(item)

This creates a defaultdict with empty lists as default values, allowing direct appending without key existence checks.

Example

from collections import defaultdict

def group_list_to_dict(lst):
    groups = defaultdict(list)
    for item in lst:
        groups[item].append(item)
    return dict(groups)

my_list = [1, 2, 3, 2, 4, 1, 5, 4, 3]
result = group_list_to_dict(my_list)
print(result)
{1: [1, 1], 2: [2, 2], 3: [3, 3], 4: [4, 4], 5: [5]}

Method 3: Using groupby from itertools Module

The groupby function groups consecutive similar elements in an iterable. Important: The input list must be sorted for proper grouping ?

Syntax

itertools.groupby(iterable, key=None)

This returns an iterator generating tuples of consecutive keys and groups. The optional key function determines the grouping criterion.

Example

from itertools import groupby

def group_list_to_dict(lst):
    groups = {}
    # Sort the list first for proper grouping
    sorted_lst = sorted(lst)
    for key, group in groupby(sorted_lst):
        groups[key] = list(group)
    return groups

my_list = [1, 2, 3, 2, 4, 1, 5, 4, 3]
result = group_list_to_dict(my_list)
print(result)
{1: [1, 1], 2: [2, 2], 3: [3, 3], 4: [4, 4], 5: [5]}

Comparison

Method Advantages Best For
For Loop Simple, readable Basic grouping tasks
defaultdict No key checks needed Cleaner code, frequent operations
groupby Memory efficient for sorted data Large datasets, consecutive grouping

Conclusion

Use defaultdict for cleaner code without key existence checks. Use groupby with sorted data for memory efficiency. Choose the for loop method for simple, straightforward grouping tasks.

Updated on: 2026-03-27T08:50:54+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements