我有大而复杂的设置dictinary,里面有列表的字典列表,有些像:
settings = {
'general': {
'cars': ['car1', 'car2'],
},
'local': ['loc1', 'loc2'],
}
但是这些设置字段中的任何一个都必须进行参数化,因为我需要在字段中使用不同值的那些设置的许多副本。 类似的东西:
variable0 = 'car'
variable1 = 'loc'
settings = {
'general': {
variable0+'s': [variable0+'1', variable0+'2'],
},
variable1+'al': [variable1+'1', variable1+'2'],
}
所以,它是一种模板字典。是否有一种pythonic方式来实现这一目标? 现在我找到了解决方案,我将整个python脚本导入为变量,并在使用它之前设置'变量,我必须设置' variable0'和'变量1'。 是否有更简洁的方法来实现这样的模板?
答案 0 :(得分:3)
您可以将其变成一个功能:
#!/usr/bin/env python
def get_settings(variable0, variable1):
return {
'general': {
variable0+'s': [variable0+'1', variable0+'2'],
},
variable1+'al': [variable1+'1', variable1+'2'],
}
print get_settings('car', 'loc')
答案 1 :(得分:2)
如果您的dict也与json兼容:
import json
def get_settings(**kw):
return json.loads(r"""{{
"general": {{
"{variable0:}s": ["{variable0:}1", "{variable0:}2"]
}},
"{variable1:}al": ["{variable1:}1", "{variable1:}2"]
}}""".format(**kw)
)
print get_settings(variable0="pop", variable1='cheese')