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

Python实现字典列表按id分组转换为键值为列表的字典

刚好之前做过类似的分组需求,给你分享几个Python里常用的实现方式,按需选就行:

方法1:手动循环(最直观,适合新手理解)

这种方式逻辑直白,不需要导入额外模块,一步步处理每个元素:

avariable = [{'id':1,'color':'pink'},{'id':1,'color':'blue'},{'id':2,'color':'green'}]
result = {}

for item in avariable:
    # 把id转成字符串作为字典的key,符合需求里的格式
    key = str(item['id'])
    # 如果key还没在结果字典里,先初始化一个空列表
    if key not in result:
        result[key] = []
    # 将当前元素添加到对应key的列表中
    result[key].append(item)

print(result)
# 输出结果:
# {'1': [{'id': 1, 'color': 'pink'}, {'id': 1, 'color': 'blue'}], '2': [{'id': 2, 'color': 'green'}]}
方法2:使用collections.defaultdict(简洁高效)

利用Python标准库的defaultdict可以省去判断key是否存在的步骤,代码更简洁:

from collections import defaultdict

avariable = [{'id':1,'color':'pink'},{'id':1,'color':'blue'},{'id':2,'color':'green'}]
# 初始化一个默认值为列表的字典
result = defaultdict(list)

for item in avariable:
    key = str(item['id'])
    # 直接append即可,不存在的key会自动创建空列表
    result[key].append(item)

# 可选:如果需要把defaultdict转成普通字典
result = dict(result)

print(result)
方法3:使用itertools.groupby(适合已排序的列表)

如果你的原始列表已经是按id排序的,用groupby会很方便,但注意:groupby只会对连续的相同key分组,所以必须先排序:

from itertools import groupby

avariable = [{'id':1,'color':'pink'},{'id':1,'color':'blue'},{'id':2,'color':'green'}]
# 先按id排序,确保相同id的元素连续
sorted_items = sorted(avariable, key=lambda x: x['id'])
result = {}

# 按id(转成字符串)分组,把每组转成列表存入字典
for key, group in groupby(sorted_items, key=lambda x: str(x['id'])):
    result[key] = list(group)

print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:29:25