ソース辞書の値の直積に従って辞書のリストを作成するにはどうすればよいですか(辞書を「展開」する)? 質問する

ソース辞書の値の直積に従って辞書のリストを作成するにはどうすればよいですか(辞書を「展開」する)? 質問する

次のような辞書があるとします。

{
    'Color': ['Red', 'Yellow'],
    'Size': ['Small', 'Medium', 'Large']
}

最初の辞書のキーのさまざまな値を組み合わせた辞書のリストを作成するにはどうすればよいでしょうか? 私が欲しいのは次のようなものです:

[
    {'Color': 'Red', 'Size': 'Small'},
    {'Color': 'Red', 'Size': 'Medium'},
    {'Color': 'Red', 'Size': 'Large'},
    {'Color': 'Yellow', 'Size': 'Small'},
    {'Color': 'Yellow', 'Size': 'Medium'},
    {'Color': 'Yellow', 'Size': 'Large'}
]

ベストアンサー1

順列ではなく直積を求めていると思いますが、その場合itertools.product助けられる:

>>> from itertools import product
>>> d = {'Color': ['Red', 'Yellow'], 'Size': ['Small', 'Medium', 'Large']}
>>> [dict(zip(d, v)) for v in product(*d.values())]
[{'Color': 'Red', 'Size': 'Small'}, {'Color': 'Red', 'Size': 'Medium'}, {'Color': 'Red', 'Size': 'Large'}, {'Color': 'Yellow', 'Size': 'Small'}, {'Color': 'Yellow', 'Size': 'Medium'}, {'Color': 'Yellow', 'Size': 'Large'}]

おすすめ記事