python - 如何对dict中的值求和?蟒蛇,烧瓶
问题描述
我通过 Flask 中的会话创建了简单的购物车:
session['cart'] += [{
'product_name': request.form['product_name'],
'product_cost': request.form['product_cost'],
'product_img': request.form['product_img'],
}]
那么如何获得值的总和product_cost
呢?
我试图这样做以获得价值product_cost
:
for products in cart_products:
for p in products:
print(p.product_cost)
但我收到一个错误:AttributeError: 'str' object has no attribute 'product_cost'
的输出print(cart_products)
,其中cart_products = session['cart']
:
{'product_name': 'product2', 'product_cost': '400', 'product_img': '*very long binary object*'}
解决方案
关于您的编辑,请注意这实际上是一本字典:
product_cart = {'product_name': 'product2', 'product_cost': '400', 'product_img': ''}
所以费用可以通过product_cart['product_cost']
.
但是,我不确定您是否真的打算将其保留为字典列表(其中列表是购物车内容,每个字典都是产品。看起来像:
product_cart = [{'product_name': 'product1', 'product_cost': '300', 'product_img': ''},
{'product_name': 'product2', 'product_cost': '400', 'product_img': ''},
{'product_name': 'product3', 'product_cost': '300', 'product_img': ''},
]
然后你可以这样做:
>>> for product in product_cart:
... print (product['product_cost'])
...
300
400
300
因此,要获取所有值中的一些,请使用如下函数:
def get_cart_total(cart):
return sum([float(product['product_cost']) for product in cart ])
请注意,这会将像 '400' 这样的字符串值转换为 type float
。像这样使用它:
>>> get_cart_total(product_cart)
1000.0
推荐阅读
- angular7 - Angular 7中的多个mat-icon注册表
- javascript - 如何使用 php 和 HTML 更改活动链接的类名
- c# - 包含 MaterialDesignInXaml 后无法使用 TextBox
- rest - GoogleFit Rest API - 每日步数的正确聚合数据源
- typescript - 打字稿扩展反应原生视图组件
- ios - 带方向的用户位置
- ios - 当应用程序被用户杀死时,如何从发送到 iPhone 的后端删除通知
- php - PHP:以 H:M 值输出秒数
- java - 如何在 Spring 5 中使用自定义的“TransactionAttributeSource”
- angular - 使用 cdk CdkDragDrop 的两个数组的奇怪行为