使用迭代工具将迭代器解压缩到字典中



有没有办法在不嵌套的情况下实现这一点?目前,"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('')
config_file_main = [dict(attenuation=ii, file=f, random_value=random_value) for i in itertools.product(attenuation_scalar, repeat=len(files))for f, ii in zip(files, i) ]

这将创建与第一个代码片段相同的输出,不确定我会建议这样做,因为它可能会很快变得不可读。

最新更新