如何用Jinja内置过滤器实现Python列表推导式的等效逻辑?
Jinja实现等效列表推导式的写法
原Python风格的列表推导式无法在Jinja中直接运行,因为Jinja不支持这类原生Python推导式语法。你可以用Jinja内置过滤器实现等效逻辑,以下是两种可行写法:
方法一:使用select+list过滤器(支持字典键判断)
{% set answerdata = data | select(lambda d: d['question_instance_id'] == question.question_id) | list %}
方法二:使用selectattr+list过滤器(更简洁的属性/键匹配)
{% set answerdata = data | selectattr("question_instance_id", "equalto", question.question_id) | list %}
简单说明:
select过滤器会遍历data集合,筛选符合lambda条件的元素selectattr可直接针对元素的属性(或字典键)进行匹配,equalto是Jinja内置的相等判断测试器list过滤器会将筛选后的迭代器转换为列表格式,和原推导式的输出结构一致
内容的提问来源于stack exchange,提问作者husain
相关产品推荐
相关产品推荐

