如何在Jinja中用类列表推导式过滤指定长度的子列表?
Jinja中过滤特定长度子列表的方法
要在Jinja中实现类似列表推导式的效果,过滤列表的列表中长度为指定值的子列表,你需要使用select过滤器配合length测试,而非selectattr(后者针对对象属性,不适合处理列表)。
正确写法示例
{% set lisname = [['a','b','c'],['d','e'],['a']] %} {# 过滤出长度为3的子列表 #} {{ lisname|select('length', 3)|list }} {# 获取符合条件的子列表数量 #} {{ lisname|select('length', 3)|list|length }}
代码说明
select('length', 3):遍历lisname中的每个子列表,检查其长度是否等于3,保留符合条件的元素。|list:将select返回的迭代器转换为列表(若仅需统计数量,可省略此步直接追加|length)。
输出结果
- 过滤子列表的输出:
[['a', 'b', 'c']] - 统计数量的输出:
1
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

