You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简洁实现无需知晓总条目数的模板映射功能

解决方案

核心逻辑是递归占位符替换+深拷贝模板+遍历数据条目,无需提前获知data的总长度,适配任意条目数,仅依赖Python标准库即可实现。

完整实现代码

import copy

# 递归替换模板中的占位符
def render_template(tpl, data, placeholder_map=None):
    # 可配置占位符和数据key的映射关系
    if placeholder_map is None:
        placeholder_map = {
            "<ID>": "id",
            "<PORT>": "port",
            "<NAME>": "description"
        }
    if isinstance(tpl, str):
        return data.get(placeholder_map.get(tpl, tpl), tpl)
    elif isinstance(tpl, list):
        return [render_template(item, data, placeholder_map) for item in tpl]
    elif isinstance(tpl, dict):
        return {k: render_template(v, data, placeholder_map) for k, v in tpl.items()}
    else:
        return tpl

# 原始模板和数据
template = [{"id": "<ID>", "interfaces": [{"port": "<PORT>", "description": "<NAME>"}]}]
data = [
    {'id': '1234', 'port': 'ETH0', "description": "MyDescName"},
    {'id': '4567', 'port': 'ETH1', "description": "MyDescName-2"}
]

# 生成结果
result = []
for item in data:
    # 每次深拷贝模板避免不同条目之间互相影响
    tpl_copy = copy.deepcopy(template[0])
    result.append(render_template(tpl_copy, item))

# 输出验证
print(result)

运行上述代码输出的结果和示例给出的预期结构完全一致。

方案优势

  • 自动适配任意长度的data列表,无需提前统计条目数
  • 支持任意嵌套层级的模板结构,修改模板不用调整渲染逻辑
  • 可通过placeholder_map灵活调整占位符和数据字段的对应关系,无需硬编码字段名

内容的提问来源于stack exchange,提问作者ovntatar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:39:00