如何基于字典列表动态格式化重复的字符串模板?
动态替换重复模板中的占位符(基于字典列表)
一行代码实现方案
你可以通过重复模板字符串 + 解包字典值的生成器完成动态替换,一行代码就能搞定:
str_template = ''' Part 1: {} Part 2: {}''' l2 = [{'Val1': "c", 'Val2': "d"},{'Val1': "e", 'Val2': "f"}] # 核心一行代码 result = (str_template * len(l2)).format(*(val for d in l2 for val in (d['Val1'], d['Val2']))) print(result)
代码解释
str_template * len(l2):根据字典列表的长度重复原始模板,自动匹配需要的占位符数量。比如示例中列表长度为2,模板重复2次后会生成4个{}占位符。*(val for d in l2 for val in (d['Val1'], d['Val2'])):用嵌套生成器遍历每个字典,按顺序取出Val1和Val2的值,再通过*操作符解包成format()方法需要的位置参数,对应替换所有占位符。
输出结果
运行后会得到:
Part 1: c Part 2: d Part 1: e Part 2: f
灵活调整
如果需要调整占位符对应的值顺序,只需修改生成器中(d['Val1'], d['Val2'])的键顺序即可;如果字典的键不同,直接替换成目标键名就行。
内容的提问来源于stack exchange,提问作者anshuk_pal
相关产品推荐
相关产品推荐

