python - 使用 groupby 过滤器后应用神社过滤器

标签 python group-by jinja2

我有一个字典列表,我想按某个属性分组,然后按另一个属性求和。对于变量“foo”,这将是这样的:

foo | groupby('a') | sum(attribute='b')

这显然行不通,因为在 groupby 之后,我有一个元组列表。有什么方法可以解压元组然后重新打包,这样我就可以维护 groupby 完成的工作,但处理第二个元组值?

最佳答案

您可以使用 map() filter将总和应用于每个组,前提是您先提取组列表:

foo | groupby('a') | map(attribute='list') | map('sum', attribute='b')

那是因为 map()将第一个参数作为另一个过滤器,其余参数传递给该过滤器,将该过滤器应用于 groupby() 的每个元素。 .

这确实意味着您最终得到的是总和列表,而不是组。

您不能将求和应用于组并保留 .grouper属性到位。为此,唯一的解决方案是使用实际的循环:

{% for group in foo | groupby('a') %}
    {{ group.grouper }}: {{ group.list | sum(attribute='b') }}
{% endfor %}

将输出 a 的每个不同值后跟一个冒号和属性之和 b对于那个群体。

关于python - 使用 groupby 过滤器后应用神社过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28006299/

相关文章:

python - Pandas :如何在毫秒间使用 between_time?

mysql - 如何组合查询?

python - Ansible 中的 if 语句与 Jinja2 变量

Python3 : Base Constructor getting called implicitly

python - web2py 应用程序配置文件

python - Numpy 和 Scipy 在 Windows 上的安装

MYSQL高级排序

Postgresql更新基于计数、最小值和分组依据

javascript - 使用 json 数据、nunjucks 和 for 循环动态迭代表单 radio 输入

Python、Jinja2 nl2br 和安全性