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

如何将Python嵌套字典按部门分组转换为嵌套列表?

按部门分组重排嵌套字典的解决方案

没问题,我来帮你搞定这个分组需求!首先得提一句,你原始代码里的name值(比如abhi)没加引号,这会导致语法错误,得先修正成字符串形式才能正常运行哦。

方法一:基础循环实现

先通过一个临时字典按部门分组,再将字典的值转换为列表即可得到你想要的格式:

# 修正后的原始数据
d = {'records':[ {'name':'abhi','age':23,'dept':'cse'}, {'name':'anu','age':20,'dept':'ece'}, {'name':'ammu','age':25,'dept':'cse'}, {'name':'anju','age':26,'dept':'ece'} ]}

# 创建临时字典用于分组
grouped_dict = {}
for record in d['records']:
    dept = record['dept']
    # 如果部门不在字典中,先初始化空列表
    if dept not in grouped_dict:
        grouped_dict[dept] = []
    # 将当前记录添加到对应部门的列表中
    grouped_dict[dept].append(record)

# 将字典的值转换为列表,得到最终结果
result = list(grouped_dict.values())
print(result)

方法二:用collections.defaultdict简化代码

如果想让代码更简洁,可以使用Python标准库中的defaultdict,它会自动为不存在的键初始化空列表:

from collections import defaultdict

# 修正后的原始数据
d = {'records':[ {'name':'abhi','age':23,'dept':'cse'}, {'name':'anu','age':20,'dept':'ece'}, {'name':'ammu','age':25,'dept':'cse'}, {'name':'anju','age':26,'dept':'ece'} ]}

grouped_dict = defaultdict(list)
for record in d['records']:
    # 直接按部门键添加记录,无需判断键是否存在
    grouped_dict[record['dept']].append(record)

result = list(grouped_dict.values())
print(result)

运行以上任意一种方法,都会得到你预期的嵌套列表格式:

[ [ {'name':'abhi','age':23,'dept':'cse'}, {'name':'ammu','age':25,'dept':'cse'} ], [ {'name':'anu','age':20,'dept':'ece'}, {'name':'anju','age':26,'dept':'ece'} ] ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:08:59