次のような辞書があるとします。
{
'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'}]