Combining values from dictionary of list in Python

When working with a Python dictionary that has lists as values, you may need to create all possible combinations of keys and their corresponding values. This is useful for generating test data, configuration combinations, or exploring different scenarios.

Using sorted() and product()

The product() function from itertools creates a Cartesian product of iterables. By sorting the dictionary keys first, we ensure consistent ordering in our combinations ?

import itertools as it

schedule_dict = {
    "Day": ["Tue", "Wed"],
    "Time": ["2pm", "9am"],
}

# Sorting dictionary keys for consistent ordering
sorted_keys = sorted(schedule_dict)

# Using product to create all combinations
combinations = [dict(zip(sorted_keys, prod))
    for prod in it.product(*(schedule_dict[key] for key in sorted_keys))]

print(combinations)
[{'Day': 'Tue', 'Time': '2pm'}, {'Day': 'Tue', 'Time': '9am'}, {'Day': 'Wed', 'Time': '2pm'}, {'Day': 'Wed', 'Time': '9am'}]

Using zip() with product()

This approach uses zip() along with product() to create separate dictionaries for each key-value pair, then groups them by combination ?

import itertools as it

schedule_dict = {
    "Day": ["Tue", "Wed"],
    "Time": ["2pm", "9am"],
}

# Creating combinations with separate dictionaries
combinations = [[{key: value} for (key, value) in zip(schedule_dict, values)]
    for values in it.product(*schedule_dict.values())]

print(combinations)
[[{'Day': 'Tue'}, {'Time': '2pm'}], [{'Day': 'Tue'}, {'Time': '9am'}], [{'Day': 'Wed'}, {'Time': '2pm'}], [{'Day': 'Wed'}, {'Time': '9am'}]]

Using List Comprehension with product()

For a more straightforward approach, you can directly use product() with the dictionary values ?

import itertools as it

schedule_dict = {
    "Day": ["Tue", "Wed"],
    "Time": ["2pm", "9am"],
}

# Simple approach using product directly
keys = list(schedule_dict.keys())
combinations = [dict(zip(keys, values)) 
    for values in it.product(*schedule_dict.values())]

print(combinations)
[{'Day': 'Tue', 'Time': '2pm'}, {'Day': 'Tue', 'Time': '9am'}, {'Day': 'Wed', 'Time': '2pm'}, {'Day': 'Wed', 'Time': '9am'}]

Comparison

Method Output Format Best For
sorted() + product() Single dictionaries Consistent key ordering
zip() + product() List of separate dictionaries Grouping by combination
Direct product() Single dictionaries Simple, readable code

Conclusion

Use itertools.product() to generate all possible combinations from dictionary values. The first and third methods produce unified dictionaries, while the second method creates separate key-value dictionaries for each combination.

Updated on: 2026-03-15T17:55:48+05:30

652 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements