'Decouple dictionary that contains a list as a value for a particular key

Let's say I have a dict in Python that follows this structure:

dict_a = {"a": [1,2,3]}

I want to produce an output to 'decouple' dict_a in a list of 3 separate dicts like

>>> [{"a": 1}, {"a": 2}, {"a": 3}]

What I have now is:

dict_a = {"a": [1,2,3]}
result = []

for key, values in dict_a.items():
    for value in values:
        result.append({key: value})

print(result)
>>> [{"a": 1}, {"a": 2}, {"a": 3}]

Is there any way to achieve this or a similar 'decoupling' behavior with list comprehension or a dict related method?



Solution 1:[1]

While the for loops are quite pythonic and readable, the same can be achieved with comprehensions:

dict_a = {"a": [1,2,3]}
result = [{k: v} for k, vs in dict_a.items() for v in vs]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ljmc