python - 使用 sum() 在项目列表中查找汇总价格
问题描述
我有一个包含产品的项目“display_list”列表,这些产品中有一个名为“pro price”的字段,它是列表中产品的价格。
例如,如果我有一个包含 2 个苹果和一个香蕉的显示列表,我想计算出 2 个苹果和香蕉的总价格,我该怎么做呢?
我目前已经尝试过
total = sum([(pro.proprice for pro in display_list)])
但这不起作用,有人可以伸出援手吗?提前致谢
解决方案
你在列表推导中写了括号,结果你创建了一个包含一个元素的列表:一个生成器。你不能取一个发电机的总和。
您可以做两件事:将生成器传递给sum(..)
,或者您可以先生成一个列表并将其传递给sum(..)
,因此:
total = sum([pro.proprice for pro in display_list])
或者:
total = sum(pro.proprice for pro in display_list)
话虽如此,如果display_list
是 a QuerySet
,您可以使用聚合:
# if display_list is a QuerySet
from django.db.models import Sum
total = display_list.aggregate(total=Sum('proprice'))['total']
推荐阅读
- gremlin - Gremlin 在遍历路径时根据传入边缘过滤掉去边缘
- node.js - 如何使用 MySQL db 部署 Strapi?
- java - 将 .txt 文件传输到数组时出错(线程异常)
- excel - VBA 输入框没有正确显示字符串?
- python - 两个相同的链接在从中解析用户名时表现不同
- javascript - 当光标离开子元素悬停父元素时如何防止父元素的鼠标悬停?
- javascript - 在 onClick 函数中调度三个动作然后使用该响应映射数据是否同步
- python - Python unittest没有运行指定的测试
- angularjs - 如何防止浏览器窗口在AngularJS中关闭,直到promise得到解决
- javascript - 不触发点击事件。我的代码有什么问题?