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

Jinja2模板多map操作异常求助:提取units中name值失败

问题分析与解决

你的错误出在没有先扁平化嵌套的units列表:

  • 第一步a.values() | list得到的是包含两个字典的列表:[{"name": "val1", "units": [...]}, {"name": "val2", "units": [...]}]
  • 经过map(attribute='units')后,得到的是两个独立的列表:[[{name: item1}, {name: item2}], [{name: xyz}, {name: mno}]]
  • 此时再用map(attribute='name'),是尝试给这两个列表对象取name属性——列表本身没有这个属性,所以返回Undefined。

修正后的代码

只需要在提取units之后,加入flatten过滤器把嵌套列表展开,再提取name:

{% set a = {
    "val1": {
        "name": "val1",
        "units": [
            {"name": "item1", "size": 45},
            {"name": "item2", "size": 36}
        ]
    },
    "val2": {
        "name": "val2",
        "units": [
            {"name": "xyz", "size": 45},
            {"name": "mno", "size": 36}
        ]
    }
}
%}
{% set check = a.values() | list | map(attribute='units') | flatten | map(attribute='name') | list  %} 
{{ check }}

执行流程拆解

  1. a.values() | list:获取字典中所有值,转为列表
  2. map(attribute='units'):提取每个值的units字段,得到嵌套的列表集合
  3. flatten:把嵌套列表展开为一维列表,此时内容是所有的unit字典
  4. map(attribute='name'):遍历每个unit字典,提取name属性
  5. list:最终转为列表,得到预期的["item1", "item2", "xyz", "mno"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:19:55