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

使用Python实现列表中多字典数据的分组聚合处理

Python多字典列表按指定键分组聚合实现

需求描述

对包含多个字典的列表,按字典中a键的取值做分组,同组内的b、c键对应值聚合为元组,最终输出指定结构的结果。

输入输出示例

输入数据:

input_list = [{'a': '1', 'b':'2','c':'10'},{'a': '1', 'b':'3','c':'11'},{'a':'2','b':'19','c':'100'}]

期望输出:

[{'1': {'b': ('2','3'), 'c': ('10','11')}, '2': {'b': ('19',), 'c': ('100',)}}]

实现代码

from collections import defaultdict

input_list = [{'a': '1', 'b':'2','c':'10'},{'a': '1', 'b':'3','c':'11'},{'a':'2','b':'19','c':'100'}]

# 初始化分组容器
group_data = defaultdict(lambda: {'b': [], 'c': []})

for item in input_list:
    a_key = item['a']
    group_data[a_key]['b'].append(item['b'])
    group_data[a_key]['c'].append(item['c'])

# 转换为要求的输出结构
result = [
    {k: {'b': tuple(v['b']), 'c': tuple(v['c'])} for k, v in group_data.items()}
]

print(result)

补充说明

如果需要严格匹配你给出的示例中单值不加逗号的写法(注意该写法实际在Python中是普通数值,不是元组),可以修改转换逻辑:

def list_to_tuple_or_single(lst):
    return lst[0] if len(lst) == 1 else tuple(lst)

result = [
    {k: {'b': list_to_tuple_or_single(v['b']), 'c': list_to_tuple_or_single(v['c'])} for k, v in group_data.items()}
]

运行后得到的输出就和你给出的示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:24:03