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

如何在while循环中统计列表内状态的出现次数并获取Top3

问题描述

给定变量:

a = [(1,10),(2,20),(3,30),(4,10),(6,10),(7,20),(8,30)]

每个元组的第一个元素是id,第二个是status。需要统计每个status的出现次数,并获取出现次数最多的前3个(预期结果:10=3,20=2,30=2)。

现有如下while循环仅能打印status,需修改以完成统计需求:

x = 0
while (x< len(a)):
        print(a[x][1])
        x+=1
解决方案

1. 在while循环中统计status次数

使用字典存储每个status的计数,遍历过程中更新字典值:

a = [(1,10),(2,20),(3,30),(4,10),(6,10),(7,20),(8,30)]
status_count = {}
x = 0
while x < len(a):
    status = a[x][1]
    # 若status已在字典中则计数+1,否则初始化为1
    if status in status_count:
        status_count[status] += 1
    else:
        status_count[status] = 1
    x += 1

2. 获取出现次数最多的前3个status

通过sorted()函数按次数降序排序字典项,再截取前3个结果:

# 按次数降序排序,key指定取元组的第二个元素(即计数)
sorted_status = sorted(status_count.items(), key=lambda item: item[1], reverse=True)
top_3 = sorted_status[:3]

# 打印最终结果
print("出现次数最多的前3个status:")
for status, count in top_3:
    print(f"{status}={count}")

完整代码

a = [(1,10),(2,20),(3,30),(4,10),(6,10),(7,20),(8,30)]
status_count = {}
x = 0
while x < len(a):
    status = a[x][1]
    if status in status_count:
        status_count[status] += 1
    else:
        status_count[status] = 1
    x += 1

sorted_status = sorted(status_count.items(), key=lambda item: item[1], reverse=True)
top_3 = sorted_status[:3]

print("出现次数最多的前3个status:")
for status, count in top_3:
    print(f"{status}={count}")

运行后输出:

出现次数最多的前3个status:
10=3
20=2
30=2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:55:17