首页 > 解决方案 > 计算列表中匹配条件的项目数,jinja/flask

问题描述

我正在使用 Flask 将字典列表传递到我的 HTML 中

data = [
{'name':'val1', 'status':0},
{'name':'val2', 'status':1},
{'name':'val3', 'status':1}
]

它也可以通过变量在 HTML 中data访问data=data

我可以计算dataHTML 中的项目数

{{ data|length }} # 3

但我想要一段具有特定状态的项目。即1

{{ length of data where item ['status] == 1 }}

# should out put length of 2

这个问题不是重复的。这个问题专门询问如何根据条件进行过滤。另一个答案仅基于布尔值进行过滤。

如果我的“状态”键可以保存任何'apple', 10, 'xyz'我希望能够过滤基数的值,那么这不是真假。

回答

FLASK
database = [
{'name':'val1', 'status':'abc'},
{'name':'val2', 'status':'xyz'},
{'name':'val3', 'status':'xyz'}
]

HTML
{{ database|selectattr('status', 'equalto', 'xyz') | list | length}}

# 2

标签: flaskjinja2

解决方案


我认为,这将解决问题,遍历数据并为其维护计数值;

{% for row in data %}
    {% if (row.get('status')|int = 1) %}
        {% set counter = counter + 1 %}        
    {% endif %} 
{% endfor %}

推荐阅读