我通过 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*'}
答案 0 :(得分:1)
关于您的编辑,请注意这实际上是一本字典:
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”之类的字符串值转换为类型 float
。像这样使用它:
>>> get_cart_total(product_cart)
1000.0
答案 1 :(得分:0)
使用第一个 for 循环访问字典,但问题是,您使用第二个 for 循环访问字典中的键而不是值。 因此,只需这样做:
for products in cart_products:
print(products['product_cost'])
答案 2 :(得分:0)
要获得 product_cost
的总和,您需要:
sum([int(x['product_cost']) for x in session['cart']])
示例:
cart = [
{
'product_name': 'abc',
'product_cost': 12,
'product_img': 'abc.jpg',
},
{
'product_name': 'abc',
'product_cost': 13,
'product_img': 'abc.jpg',
},
{
'product_name': 'abc',
'product_cost': 14,
'product_img': 'abc.jpg',
},
]
total = sum([x['product_cost'] for x in cart])
print(total)
->
39
答案 3 :(得分:0)
你可以尝试使用
some_var = session[‘cart’][0].values()
another_var = len(some_var)