Python按字典指定key分组统计数值总和并取Top3的实现方法
实现代码(基于你现有代码扩展)
from collections import defaultdict base = [ {'num': 10, 'bet': '100EUR'}, {'num': 22, 'bet': '10EUR'}, {'num': 10, 'bet': '210EUR'}, {'num': 11, 'bet': '100EUR'}, {'num': 8, 'bet': '50EUR'}, {'num': 10, 'bet': '10EUR'}, {'num': 8, 'bet': '30EUR'}, {'num': 32, 'bet': '10EUR'}] # 你原有处理逻辑:提取金额转整数 newbase = [{'num': b['num'], 'bet': int(b['bet'][:-3])} for b in base] # 按num分组统计总投注额 bet_sum = defaultdict(int) for item in newbase: bet_sum[item['num']] += item['bet'] # 按总金额降序排序,取前3 top3 = sorted(bet_sum.items(), key=lambda x: x[1], reverse=True)[:3] # 按要求格式输出 for num, total in top3: print(f"{num} = {total} EUR")
无额外依赖的简化版本(不用导入collections)
把分组统计的部分替换为以下代码即可,其余逻辑不变:
bet_sum = {} for item in newbase: num = item['num'] bet_sum[num] = bet_sum.get(num, 0) + item['bet']
运行后输出完全符合预期:
10 = 320 EUR 11 = 100 EUR 8 = 80 EUR
内容的提问来源于stack exchange,提问作者Nikita Chernevsky
相关产品推荐
相关产品推荐

