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

如何遍历字典列表并按key分组生成指定格式数据?

嘿,我来帮你解决这个分组转换的问题!你需要把按name分散的字典条目,聚合成每个name对应一组日期和价格的结构,其实只要先分组再转换格式就可以了,下面给你两种可行的方法:

方法一:用普通字典手动分组

先创建一个临时字典来按name收集数据,之后再转换成你需要的格式:

my_list = [
    {'name': 'AAA', 'date': '2018-05-14', 'price': 20.0},
    {'name': 'AAA', 'date': '2018-05-15', 'price': 22.0},
    {'name': 'AAA', 'date': '2018-05-16', 'price': 30.0},
    {'name': 'BBB', 'date': '2018-05-14', 'price': 15.0},
    {'name': 'BBB', 'date': '2018-05-15', 'price': 32.0}
]

# 临时字典,键是name,值是对应的[date, price]列表
grouped = {}
for item in my_list:
    name = item['name']
    # 如果当前name还没在字典里,先初始化空列表
    if name not in grouped:
        grouped[name] = []
    # 将date和price组成子列表添加进去
    grouped[name].append([item['date'], item['price']])

# 转换成目标格式的列表
parsed_list = [{'name': key, 'data': value} for key, value in grouped.items()]

print(parsed_list)

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

如果不想手动判断键是否存在,可以用defaultdict来自动初始化列表,代码会更简洁:

from collections import defaultdict

my_list = [
    {'name': 'AAA', 'date': '2018-05-14', 'price': 20.0},
    {'name': 'AAA', 'date': '2018-05-15', 'price': 22.0},
    {'name': 'AAA', 'date': '2018-05-16', 'price': 30.0},
    {'name': 'BBB', 'date': '2018-05-14', 'price': 15.0},
    {'name': 'BBB', 'date': '2018-05-15', 'price': 32.0}
]

# defaultdict会自动为不存在的键创建空列表
grouped = defaultdict(list)
for item in my_list:
    grouped[item['name']].append([item['date'], item['price']])

# 转换为目标格式
parsed_list = [{'name': k, 'data': v} for k, v in grouped.items()]

print(parsed_list)

这两种方法运行后都会得到你想要的parsed_list结果。核心思路就是先把相同name的条目聚合起来,再把聚合后的结构转换成你需要的字典格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:50:50