friend 们,基本上,我想听写:
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)]
然后您只需要使用现有键和产品中的每个项目创建一个新字典。
关于python - 如何让所有排列从字典的每个值列表中选择一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048832/