最好的pythonic方式来模板字典

时间:2016-01-10 12:09:29

标签: python templates dictionary

我有大而复杂的设置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'。 是否有更简洁的方法来实现这样的模板?

2 个答案:

答案 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')