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

Python:如何将字典列表转换为特定结构的字典列表?

按厂商分组重构字典列表的实现方法

这个需求本质就是把原始列表按manufacturer字段分组,再重新包装成指定的结构,用Python的话有两种实用的实现方式,我给你一步步讲:

方法一:基础循环实现(直观易理解)

这种方法不需要依赖任何第三方模块,纯基础Python语法就能搞定,适合刚入门的朋友:

首先定义你的原始数据(注意你示例里的manufacurer拼写少了个t,实际代码里要统一成正确的键名哦):

original_list = [
    {'manufacturer': 'VW', 'group': 'Passat', 'age': 2},
    {'manufacturer': 'Audi', 'group': 'Quadro', 'age': 0.5},
    {'manufacturer': 'VW', 'group': 'Golf', 'age': 6}
]

然后分两步走:先分组,再转成目标结构:

# 第一步:用字典临时存储每个厂商对应的所有条目
grouped_data = {}
for car in original_list:
    brand = car['manufacturer']
    # 如果厂商还没在字典里,先创建空列表
    if brand not in grouped_data:
        grouped_data[brand] = []
    # 把当前条目加到对应厂商的列表里
    grouped_data[brand].append(car)

# 第二步:把分组后的字典转换成你要的列表格式
final_result = [
    {'manufacturer': brand, 'value_list': items}
    for brand, items in grouped_data.items()
]

print(final_result)

运行后就能得到你想要的结构,这个方法逻辑清晰,哪怕是新手也能一眼看明白每一步在做什么。

方法二:用itertools.groupby简化代码(更简洁)

如果你想写得更优雅,可以用Python标准库的itertools.groupby,但要注意一个关键点:groupby只会对连续的相同键分组,所以必须先把原始列表按manufacturer排序:

from itertools import groupby

# 先按厂商名称排序,确保同厂商的条目连续
sorted_cars = sorted(original_list, key=lambda x: x['manufacturer'])

# 分组并直接生成目标结构
final_result = []
for brand, group in groupby(sorted_cars, key=lambda x: x['manufacturer']):
    final_result.append({
        'manufacturer': brand,
        'value_list': list(group)
    })

print(final_result)

这个方法代码更紧凑,但一定要记得先排序,不然如果原始列表里同厂商的条目不连续,会被分成多个组,结果就不对了。

小提醒

如果你原始数据里存在厂商名称大小写不一致(比如'VW'和'vw')或者拼写错误的情况,可以在分组前先做统一处理,比如把厂商名转成小写:

brand = car['manufacturer'].strip().lower()

这样就能避免因为大小写或者空格导致的分组错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:52:28