如何用Python统计用户购物车中相同product_id和quantity的条目数
购物车同款商品统计(Python实现)
数据背景
Cart表结构
包含以下字段:
cart_idproduct_idquantity(Decimal类型)user_id
示例单条记录
<Record cart_id=26 product_id=2 quantity=Decimal('1000.00') user_id=582042554>
需求
禁止使用SQL,通过Python代码统计指定用户下,product_id和quantity完全相同的购物车记录行数,最终输出格式要求:
2 times product_id=2 with quantity=1000 3 times product_id=4 with quantity=500
Python实现方案
假设已经获取到目标用户的所有购物车记录(存储为Record对象列表user_cart_records),可以借助collections.Counter快速实现分组统计:
from collections import Counter # 统计(product_id, quantity)组合出现的次数 group_counts = Counter((rec.product_id, rec.quantity) for rec in user_cart_records) # 按要求格式输出结果 for (prod_id, qty), count in group_counts.items(): # 优化Decimal显示:如果是整数形式则转成整数,否则保留原格式 display_qty = int(qty) if qty == int(qty) else qty print(f"{count} times product_id={prod_id} with quantity={display_qty}")
代码逻辑说明
- 分组统计:用
Counter以(product_id, quantity)元组作为统计键,自动计数每个组合出现的次数 - 格式处理:针对Decimal类型的
quantity做显示优化,避免输出Decimal('1000.00')这类冗余格式 - 结果输出:遍历统计结果,按需求的字符串格式打印每一组的统计信息
内容的提问来源于stack exchange,提问作者Oleh Sikirsyi
相关产品推荐
相关产品推荐

