包含字符串占位符和默认值的Python字典

时间:2014-01-30 19:20:26

标签: python python-2.7 dictionary

我在python2.7中遇到以下问题。我想要一个这样的模板字典:

my_dict = {
    'key_1' : %(key_1)s,
    'key_2' : %(key_2)s,
}

我希望像这样使用它:

new_dict = my_dict % {'key_1': 'something', 'key_2': 'anything'}

但这引起了例外:

TypeError: unsupported operand type(s) for %: 'dict' and 'dict'

我的问题有两点:

  1. 是否有任何方法或结构,最好是字典,以实现这一目标:
  2. 考虑到,如果没有传递值,有没有办法默认值?
  3. 我对2的意思是:

    my_dict = {
        'key_1' : %s or None, # if no value is interpolated at key 'key_1'
    }
    

1 个答案:

答案 0 :(得分:1)

template = {
    'key_1' : '%(key_1)s',
    'key_2' : '%(key_2)s',
}

values_dict = {'key_1': 'something', 'key_2': 'anything'}

然后使用所有格式制作新的dict

new_dict = dict((key, template[key] % values_dict) for key, value in template.items())

或者,如果您确定更新原始dict

for key, value in template.items():
    template[key] %= values_dict