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

按key分组字典列表:将字典列表按year聚合,合并其他字段为列表

按年份聚合字典列表的实现方法

需求说明

给定如下原始字典列表:

original_list = [
    {'N': 2, 'year': 2005}, {'N': 3, 'year': 2005},
    {'R': 4, 'year': 2005}, {'R': 5, 'year': 2005},
    {'N': 2, 'year': 2006}, {'N': 3, 'year': 2006},
    {'R': 4, 'year': 2006}, {'R': 5, 'year': 2006}
]

需要按year字段分组,将同一年份下其他键对应的值合并为列表,最终得到如下格式:

[
    {'N': [2, 3], 'R': [4, 5], 'year': 2005},
    {'N': [2, 3], 'R': [4, 5], 'year': 2006}
]

解决方案

方法1:固定键的手动聚合(适用于已知除year外的键)

如果确定除了year只有N和R两个键,直接初始化结构的代码更简洁:

year_groups = {}

for item in original_list:
    year = item['year']
    if year not in year_groups:
        year_groups[year] = {'year': year, 'N': [], 'R': []}
    for key, value in item.items():
        if key != 'year':
            year_groups[year][key].append(value)

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

方法2:动态键的通用聚合(适用于未知键的场景)

如果除了year还可能有其他不确定的键,用动态创建列表的方式更通用:

year_groups = {}

for item in original_list:
    year = item['year']
    if year not in year_groups:
        year_groups[year] = {'year': year}
    for key, value in item.items():
        if key == 'year':
            continue
        if key not in year_groups[year]:
            year_groups[year][key] = []
        year_groups[year][key].append(value)

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

代码说明

  • 先用字典year_groups按年份分组,键为年份值,值为对应年份的聚合字典
  • 遍历原始列表时,逐个将非year键的值追加到对应年份的列表中
  • 最后将字典的values()转换为列表,得到最终的聚合结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:01:19