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

如何按指定键值对合并列表中的多个字典并将其余字段存入other_cols

Python 按指定键合并列表内字典实现

需求说明

我们需要对列表中的多个字典按照指定键的键值对进行合并:若多个字典的指定键对应的键值对完全一致,则将这些字典的其余键值对统一归集到other_cols字段下。

输入输出示例

输入参数

# 待处理的字典列表
input_list = [{'a': 1, 'b' : 2, 'c': 3, 'd': 4},
              {'a': 1, 'b' : 2, 'c': 5, 'd': 6},
              {'a': 9, 'b' : 10, 'c': 11, 'd': 12},
              {'a': 9, 'b' : 10, 'c': 13, 'd': 14},
              {'a': 9, 'b' : 10, 'c': 15, 'd': 16},
              {'a': 17, 'b' : 18, 'c': 19, 'd': 20},
              {'a': 1, 'b' : 2, 'c': 7, 'd': 8}]
# 指定的合并键列表
merge_by_keys = ['a','b']

预期输出

expected_output_list = [
    {'a': 1, 'b' : 2, 'other_cols':[{'c': 3, 'd': 4},
                                      {'c': 5, 'd': 6},
                                      {'c': 7, 'd': 8}]},
    {'a': 9, 'b' : 10, 'other_cols':[{'c': 11, 'd': 12},
                                       {'c': 13, 'd': 14},
                                       {'c': 15, 'd': 16}]},
    {'a': 17, 'b' : 18, 'other_cols':[{'c': 19, 'd': 20}]}
]

实现代码

我们可以用collections.defaultdict做临时分组容器完成分组,再转换为目标格式:

from collections import defaultdict

def merge_dicts_by_keys(input_list, merge_by_keys):
    group_dict = defaultdict(list)
    for item in input_list:
        # 生成分组唯一标识
        group_key = tuple(item[key] for key in merge_by_keys)
        # 提取非合并键的键值对
        other_cols = {k:v for k,v in item.items() if k not in merge_by_keys}
        group_dict[group_key].append(other_cols)
    # 转换为目标输出结构
    output = []
    for group_key, other_cols_list in group_dict.items():
        res_item = dict(zip(merge_by_keys, group_key))
        res_item['other_cols'] = other_cols_list
        output.append(res_item)
    return output

调用验证

result = merge_dicts_by_keys(input_list, merge_by_keys)
print(result)

运行后输出结果和预期完全一致。

内容的提问来源于stack exchange,提问作者RH-NewDeveloper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:18:04