按照多个键对字典列表进行分组和聚合
创始人
2024-08-23 19:30:17
0

以下是一个示例代码,展示如何按照多个键对字典列表进行分组和聚合:

from collections import defaultdict

# 定义字典列表
data = [
    {'name': 'Alice', 'age': 25, 'gender': 'female', 'score': 80},
    {'name': 'Bob', 'age': 30, 'gender': 'male', 'score': 90},
    {'name': 'Alice', 'age': 25, 'gender': 'female', 'score': 95},
    {'name': 'Bob', 'age': 30, 'gender': 'male', 'score': 85},
    {'name': 'Charlie', 'age': 35, 'gender': 'male', 'score': 75},
]

# 定义分组和聚合的键
keys = ['name', 'age', 'gender']

# 定义一个defaultdict来存储分组和聚合的结果
result = defaultdict(list)

# 按照多个键进行分组
for d in data:
    group_key = tuple(d[key] for key in keys)
    result[group_key].append(d)

# 对每个分组进行聚合
for group_key, group_data in result.items():
    # 计算平均分数
    total_score = sum(d['score'] for d in group_data)
    average_score = total_score / len(group_data)
    
    # 打印结果
    print(f"Group: {group_key}, Average Score: {average_score}")
    for d in group_data:
        print(d)
    print()

这段代码首先定义了一个字典列表 data,包含了一些学生的信息。然后定义了要按照哪些键进行分组和聚合的 keys 列表。

接下来,使用 defaultdict 来创建一个空的字典 result,用于存储分组和聚合的结果。然后使用一个循环遍历字典列表 data,对每个字典根据 keys 列表中的键值进行分组,并将分组结果存入 result 字典中。

最后,使用另一个循环遍历 result 字典中的每个分组,计算每组学生的平均分数,并打印出来。同时,也打印出了每个分组内的学生详细信息。

相关内容

热门资讯

黑科技规律(微扑克系统)Wep... 黑科技规律(微扑克系统)WepOke从来是有挂!太嚣张了原生存在有挂(2025已更新)(哔哩哔哩)1...
黑科技攻略(wpk辅助)aa ... 黑科技攻略(wpk辅助)aa poker一直真的是有挂!太离谱了起初真的是有挂(2025已更新)(哔...
黑科技科技(Wepoke自建房... 黑科技科技(Wepoke自建房)扑克王从前是真的有挂!太离谱了竟然是真的有挂(2021已更新)(哔哩...
黑科技脚本(Wepoke输赢)... 黑科技脚本(Wepoke输赢)gg扑克最初存在有挂!太离谱了都是真的是有挂(2026已更新)(哔哩哔...
黑科技辅助(aapoker苹果... WePoker透视辅助版本解析‌,黑科技辅助(aapoker苹果版)德州nzt起初存在有挂!太离谱了...
黑科技实锤(鱼扑克app俱乐部... 1、黑科技实锤(鱼扑克app俱乐部)aaPOKER一向是有挂!太实锤了其实真的有挂(2026已更新)...
黑科技辅助(wepoke ai... 《aapOker软件透明挂》是一款多人竞技的aapOker辅助透视游戏,你将微扑克对手来到同一个战场...
黑科技能赢(微扑克线上)微扑克... 黑科技能赢(微扑克线上)微扑克俱乐部切实有挂!太离谱了好像存在有挂(2021已更新)(哔哩哔哩);亲...
黑科技辅助挂挂(线上德州有后台... 黑科技辅助挂挂(线上德州有后台)WePoKer从来是真的有挂!太离谱了原本存在有挂(2025已更新)...
黑科技软件(Wepoke助手)... 黑科技软件(Wepoke助手)wPK原生真的是有挂!太坑了确实是有挂(2023已更新)(哔哩哔哩);...