朋友,基本上,我想听一听:
fruit_dict = {'oranges':['big','small'],'apples':['green','yellow','red']}
通过在不同键的所有值之间进行所有可能的排列来获得以下词典列表:
output_list =
[
{'oranges':'big','apples':'green'},
{'oranges':'big','apples':'yellow'},
{'oranges':'big','apples':'red'},
{'oranges':'small','apples':'green'},
{'oranges':'small','apples':'yellow'},
{'oranges':'small','apples':'red'}
]
怎么做?太感谢了!
最佳答案
您要查找的不是排列,而是Cartesian product。可以将其视为嵌套循环。
from itertools import product
fruit_dict = {'oranges':['big','small'],'apples':['green','yellow','red']}
keys, values = zip(*fruit_dict.items())
print [dict(zip(keys, value_list)) for value_list in product(*values)]
然后,您只需要使用现有键和产品中的每个项目来创建新词典。