我想这就是你所追求的:
from itertools import product
variables = ['C1', 'C2', 'C3']
values = ['rising', 'falling', 'constant']
d = {f'regime_{k+1}': dict(v)
for k, v in enumerate(
zip(variables, v) for v in product(values, repeat=len(variables))
)}
print(d)
一些解释:
-
product(values, repeat=len(variables)) 为您提供values 的笛卡尔积,重复数等于变量数。
-
zip() 将变量与其生成的值配对。
- 通过枚举它们,您可以获得该制度的编号以及该制度的
dict 的一组变量及其值。
- f 字符串从枚举 (+1) 中获取数字并创建一个键,从 zip 对象创建一个字典。
结果:
{
'regime_1': {'C1': 'rising', 'C2': 'rising', 'C3': 'rising'},
'regime_2': {'C1': 'rising', 'C2': 'rising', 'C3': 'falling'},
'regime_3': {'C1': 'rising', 'C2': 'rising', 'C3': 'constant'},
'regime_4': {'C1': 'rising', 'C2': 'falling', 'C3': 'rising'},
'regime_5': {'C1': 'rising', 'C2': 'falling', 'C3': 'falling'},
'regime_6': {'C1': 'rising', 'C2': 'falling', 'C3': 'constant'},
'regime_7': {'C1': 'rising', 'C2': 'constant', 'C3': 'rising'},
'regime_8': {'C1': 'rising', 'C2': 'constant', 'C3': 'falling'},
'regime_9': {'C1': 'rising', 'C2': 'constant', 'C3': 'constant'},
'regime_10': {'C1': 'falling', 'C2': 'rising', 'C3': 'rising'},
'regime_11': {'C1': 'falling', 'C2': 'rising', 'C3': 'falling'},
'regime_12': {'C1': 'falling', 'C2': 'rising', 'C3': 'constant'},
'regime_13': {'C1': 'falling', 'C2': 'falling', 'C3': 'rising'},
'regime_14': {'C1': 'falling', 'C2': 'falling', 'C3': 'falling'},
'regime_15': {'C1': 'falling', 'C2': 'falling', 'C3': 'constant'},
'regime_16': {'C1': 'falling', 'C2': 'constant', 'C3': 'rising'},
'regime_17': {'C1': 'falling', 'C2': 'constant', 'C3': 'falling'},
'regime_18': {'C1': 'falling', 'C2': 'constant', 'C3': 'constant'},
'regime_19': {'C1': 'constant', 'C2': 'rising', 'C3': 'rising'},
'regime_20': {'C1': 'constant', 'C2': 'rising', 'C3': 'falling'},
'regime_21': {'C1': 'constant', 'C2': 'rising', 'C3': 'constant'},
'regime_22': {'C1': 'constant', 'C2': 'falling', 'C3': 'rising'},
'regime_23': {'C1': 'constant', 'C2': 'falling', 'C3': 'falling'},
'regime_24': {'C1': 'constant', 'C2': 'falling', 'C3': 'constant'},
'regime_25': {'C1': 'constant', 'C2': 'constant', 'C3': 'rising'},
'regime_26': {'C1': 'constant', 'C2': 'constant', 'C3': 'falling'},
'regime_27': {'C1': 'constant', 'C2': 'constant', 'C3': 'constant'}
}