You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从并行的products与sales列表中获取销量TOP5的产品?

获取销量前五产品的正确方法

你原来的代码有两个问题:

  1. 变量名写错了,produtos应该是products
  2. Counter的用法完全不对——它是用来统计列表元素的出现次数,没法帮你把产品和对应的销量关联起来排序。

下面是几种可行的解法:

方法一:zip打包+排序(最基础)

先把产品和对应的销量配对,再按销量降序排序,最后取前5个:

products = ['coca', 'pepsi', 'guarana', 'skol', 'brahma', 'agua', 'del valle', 'dolly', 'red bull', 'cachaça', 'vinho tinto', 'vodka', 'vinho branco', 'tequila', 'champagne', 'gin', 'guaracamp', 'matte', 'leite de castanha', 'leite', 'jurupinga', 'sprite', 'fanta']
sales = [1200, 300, 800, 1500, 1900, 2750, 400, 20, 23, 70, 90, 80, 1100, 999, 900, 880, 870, 50, 1111, 120, 300, 450, 800]

# 打包产品与销量为元组列表
product_sales_pairs = list(zip(products, sales))
# 按销量降序排序,key指定取元组的第二个元素(销量)
sorted_pairs = sorted(product_sales_pairs, key=lambda item: item[1], reverse=True)
# 提取前五名
top5_products = sorted_pairs[:5]

print(top5_products)

运行结果:

[('agua', 2750), ('brahma', 1900), ('skol', 1500), ('coca', 1200), ('leite de castanha', 1111)]

方法二:更简洁的写法

可以把步骤合并成一行,省去中间变量:

top5_products = sorted(zip(products, sales), key=lambda x: -x[1])[:5]
print(top5_products)

这里用-x[1]代替reverse=True,同样能让销量高的排在前面。

方法三:用heapq(适合大数据量场景)

如果产品和销量数据量极大,排序会占用较多内存,这时用heapq.nlargest直接取最大的5个,效率更高:

import heapq

top5_products = heapq.nlargest(5, zip(products, sales), key=lambda x: x[1])
print(top5_products)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:32:54