You need to enable JavaScript to run this app. 如何基于已计算的产品销售占比字典筛选贡献总销售额80%的Top产品
优惠活动
大模型
产品
解决方案
定价
更多

如何基于已计算的产品销售占比字典筛选贡献总销售额80%的Top产品

筛选累计贡献80%头部产品的实现逻辑

核心思路是按单产品贡献占比从高到低排序后逐个累加,直到累计值触达80%的阈值为止。

先提个容易踩的坑:你当前代码里计算的是销量占比(用product.quantity / total_quantity计算),如果目标是筛选销售额贡献Top80%的产品,这里必须替换成对应销售额字段计算,即把占比计算逻辑改成product.sale_amount / total_sale_amount * 100,否则最终结果会和目标完全不匹配。

操作步骤

  1. 将已有product_dict按值(单产品贡献占比)做降序排序
  2. 初始化累计占比变量、结果存储列表
  3. 遍历排序后的产品列表,逐个累加单产品占比,直到累计值触达80%阈值

可直接运行的代码

# 按销售占比从高到低排序所有产品
sorted_product_list = sorted(
    product_dict.items(),
    key=lambda item: item[1],  # 以单产品占比作为排序依据
    reverse=True  # 降序排列,从贡献最高的产品开始排序
)

cumulative_percent = 0  # 记录当前累计的销售占比
top_products = []  # 存储最终筛选出的头部产品
TARGET_THRESHOLD = 80  # 设定80%的累计贡献目标

# 逐个累加计算
for product, single_percent in sorted_product_list:
    # 如果加入当前产品后累计占比仍不超过阈值,直接纳入结果
    if cumulative_percent + single_percent <= TARGET_THRESHOLD:
        top_products.append(product)
        cumulative_percent += single_percent
    else:
        # 业务上如果需要把"刚好把累计值推过80%的那款产品"也纳入结果,取消下面两行注释即可
        # top_products.append(product)
        # cumulative_percent += single_percent
        break

# 打印验证结果
print(f"筛选出的头部产品共{len(top_products)}款,累计贡献占比{cumulative_percent}%")

注意事项

  • 排序步骤不能省:如果不按贡献从高到低做累计,最终凑出来的80%占比结果会混入大量低贡献产品,根本不是要找的Top产品
  • 边界逻辑可灵活调整:如果业务要求累计占比严格不超过80%,用默认代码逻辑即可;如果要求包含最后一个跨过阈值的产品,按注释提示打开对应代码就行
  • 你当前存储的product_dict结构不需要额外修改,直接就能跑通上述逻辑

内容的提问来源于stack exchange,提问作者Chaban33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 04:45:08