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

能否在Jinja模板中使用原生map函数提取元组列表的指定元素?

可以在Jinja模板中用原生map过滤器实现需求

当然没问题!Jinja的内置map过滤器完全支持这种场景,不需要自定义过滤器就能轻松把元组列表映射为指定元素的新列表。

针对你给出的例子,变量t = [(1, 'hello'), (2, 'world')],只需要利用map过滤器的attribute参数来指定元组的索引(注意元组索引从0开始),再配合list过滤器将结果转为列表即可:

{% set t = [(1, 'hello'), (2, 'world')] %}
{% set s = t | map(attribute='1') | list %}
{# 此时s的值就是 ['hello', 'world'] #}

原理说明

Jinja的map过滤器的attribute参数不仅可以用于访问对象的属性,还能用于访问序列(比如元组、列表)的索引——只需要把索引以字符串的形式传入即可。这样它就会遍历列表中的每个元组,取出对应索引位置的元素,最后通过list过滤器把生成器转为列表对象。

扩展场景

如果你的数据是字典列表,同样可以用这个方式提取指定键的值:

{% set items = [{'id': 1, 'text': 'hello'}, {'id': 2, 'text': 'world'}] %}
{% set texts = items | map(attribute='text') | list %}
{# texts结果为 ['hello', 'world'] #}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:31