Есть ли способ достичь этого без вложенности? Прямо сейчас в данный момент «config_file_main» содержит 3 параметра, но в действительности их будет около 10. Я знаю, что можно использовать понимание списка, но с 10 параметрами я не думаю, что это будет очень читабельным. Я бросил "random_value" в качестве ключа для примера параметра, который может оставаться неизменным для каждой конфигурации. Следует отметить, что количество файлов может быть изменено от 1 до 10 файлов. Константы затухания также произвольны, в случае необходимости они могут быть целыми числами.
Вот рабочее решение.
attenuation_scalar = [.3, .1, .2, 5]
random_value = 5
# files = ['test1']
files = ['test1', 'test2']
# files = ['test1', 'test2', 'test3']
for i in itertools.product(attenuation_scalar, repeat=len(files)):
config_file_main = []
for f, ii in zip(files, i):
config_file = {
'attenuation': ii,
'file': f,
'random_Value': random_value
}
config_file_main.append(config_file)
# do stuff to config file
print(config_file_main)
print('')
Вот что я имею в виду, распаковывая итератор в словарь.
attenuation_scalar = [.3, .1, .2, 5]
random_value = 5
# files = ['test1']
files = ['test1', 'test2']
# files = ['test1', 'test2', 'test3']
config_file_main = []
for i in itertools.product(attenuation_scalar, repeat=len(files)):
config_file = {
'attenuation': *files,
'file': *i,
'random_Value': random_value
}
config_file_main.append(config_file)
# do stuff to config file
print(config_file_main)
print('')