我可以使用itertools
生成多型字典的所有可能排列吗?我很难弄清楚可以使用哪个itertools
函数来实现此目的。你知道吗?
下面是我想要实现的一个例子
# Give the below Dict to a itertools function...
tuner_params = {
'darken': (True, False),
'hue_quantize': (True, False),
'quantize': (True, False),
'blur': (range(1,25), range(1,25)),
'h_samples': range(2, 20),
'v_samples': range(2, 20),
'offset': range(0.05, 0.9, 0.05),
'kernel': (range(1,25), range(1,25))
}
# And get something like...desired output is all possible permuations of the above dict values, for eg
[{
'darken': True,
'hue_quantize': True,
'quantize': True,
'blur': (1,1),
'h_samples': 2,
'v_samples': 2,
'offset': 0.05,
'kernel': (1,1)
},
{
'darken': False,
'hue_quantize': True,
'quantize': True,
'blur': (1,1),
'h_samples': 2,
'v_samples': 2,
'offset': 0.05,
'kernel': (1,1)
}
...
{
'darken': False,
'hue_quantize': False,
'quantize': False,
'blur': (25,25),
'h_samples': 20,
'v_samples': 20,
'offset': 0.9,
'kernel': (25,25)
}]
答案 0 :(得分:0)
您可以使用
for
子句itertools.product
上的各种数据集合-生成值列表,然后将其分配给所需的dict键。请注意,您必须了解有关如何指定可迭代对象的更多信息。例如,True or False
只是布尔值True
;您需要(True, False)
来允许product
正确迭代这些值。同样,我想您会希望将range
迭代器转换为list
类型。
就足以使您朝着需要的方向前进吗?