来自 dict 的嵌套循环的所有变体
all variations with nested loop from dict
我有一个嵌套循环,它将 assemble 参数的所有变体。参数越多嵌套越大
for param1 in [1,2,3]:
for param2 in [5,10,15]:
for param3 in [10,11,12]:
for param4 in [35,36,37]:
for param5 in [2,4,6]:
params = {
'param1': param1,
'param2': param2,
'param3': param3,
'param4': param4,
'param5': param5,
}
run_test(params)
为了使代码更具可读性,想将所有变体放入字典中,然后创建上面的循环。但是如何实现呢?
configuration = {
'param1': [1,2,3],
'param2': [5,10,15],
'param3': [10,11,12],
'param4': [35,36,37],
'param5': [2,4,6],
}
期望的输出是一个字典列表
[
{
'param1': param1,
'param2': param2,
'param3': param3,
'param4': param4,
'param5': param5,
},
{ next dict …}
]
如果输入是 list of lists
,Cartesian product 会起作用,但我有一个输入是 dict of lists
非常欢迎就如何改进第一个解决方案提出建议
您仍然可以使用 itertools.product
, just zip
返回键和值
import itertools
configuration = {
'param1': [1,2,3],
'param2': [5,10,15],
'param3': [10,11,12],
'param4': [35,36,37],
'param5': [2,4,6],
}
for i in itertools.product(*configuration.values()):
params = dict(zip(configuration.keys(), i))
run_test(params)
我有一个嵌套循环,它将 assemble 参数的所有变体。参数越多嵌套越大
for param1 in [1,2,3]:
for param2 in [5,10,15]:
for param3 in [10,11,12]:
for param4 in [35,36,37]:
for param5 in [2,4,6]:
params = {
'param1': param1,
'param2': param2,
'param3': param3,
'param4': param4,
'param5': param5,
}
run_test(params)
为了使代码更具可读性,想将所有变体放入字典中,然后创建上面的循环。但是如何实现呢?
configuration = {
'param1': [1,2,3],
'param2': [5,10,15],
'param3': [10,11,12],
'param4': [35,36,37],
'param5': [2,4,6],
}
期望的输出是一个字典列表
[
{
'param1': param1,
'param2': param2,
'param3': param3,
'param4': param4,
'param5': param5,
},
{ next dict …}
]
如果输入是 list of lists
,Cartesian product 会起作用,但我有一个输入是 dict of lists
非常欢迎就如何改进第一个解决方案提出建议
您仍然可以使用 itertools.product
, just zip
返回键和值
import itertools
configuration = {
'param1': [1,2,3],
'param2': [5,10,15],
'param3': [10,11,12],
'param4': [35,36,37],
'param5': [2,4,6],
}
for i in itertools.product(*configuration.values()):
params = dict(zip(configuration.keys(), i))
run_test(params)