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

基于公共key合并字典列表:多键合并实现求助

合并字典列表中同key1的元素

输入输出示例

输入字典列表:

[{'key1': 'fixed_value', 'validlink': ['dynamic_value']}, {'key1': 'fixed_value', 'invalidlink':   ['dynamic_value']}]

期望输出:

[{'key1': 'fixed_value', 'validlink': ['dynamic_value'], 'invalidlink': ['dynamic_value']}]

当前代码局限

你现在的代码只能处理单个validlink键,没法同时合并validlink和invalidlink:

out_a.setdefault(v['key1'], []).append(v['validlink'])
new_dict = list(map(lambda x: dict(zip(('key1', 'validlink'), x)), out_a.items()))

可行解决方案

换个思路,用字典按key1分组,逐个合并每组里的所有键值对:

input_list = [
    {'key1': 'fixed_value', 'validlink': ['dynamic_value']},
    {'key1': 'fixed_value', 'invalidlink': ['dynamic_value']}
]

merged_groups = {}
for item in input_list:
    group_key = item['key1']
    # 初始化分组字典
    if group_key not in merged_groups:
        merged_groups[group_key] = {'key1': group_key}
    # 把当前字典里除key1外的键值对都合并进去
    for k, v in item.items():
        if k != 'key1':
            merged_groups[group_key][k] = v

# 转成要求的列表格式
final_result = list(merged_groups.values())
print(final_result)

运行后会得到期望的输出:

[{'key1': 'fixed_value', 'validlink': ['dynamic_value'], 'invalidlink': ['dynamic_value']}]

补充说明

如果遇到同一个分组里有重复键(比如两个字典都有validlink),上面的代码会直接覆盖旧值。如果需要把列表内容合并(比如validlink是多个列表要合并成一个),可以把赋值部分改成:

if k in merged_groups[group_key]:
    merged_groups[group_key][k].extend(v)
else:
    merged_groups[group_key][k] = v.copy()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:40:33