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

如何基于公共键值迭代并合并多个Python字典?

解决字典列表按'i'键合并、以'id'为新键的问题

需求明确:将列表中所有'i'键值相同的字典合并,合并后保留'i'键,同时把原字典的'id'作为新键,对应的'value'作为新键的值。

输入示例

input_list = [
    {'i': 1, 'id': 'a', 'value': 10},
    {'i': 1, 'id': 'b', 'value': 20},
    {'i': 2, 'id': 'a', 'value': 30},
    {'i': 2, 'id': 'c', 'value': 40},
    {'i': 3, 'id': 'd', 'value': 50},
    {'i': 1, 'id': 'a', 'value': 15}  # 同一i下重复id,取最后一个值
]

期望输出示例

output_list = [
    {'i': 1, 'a': 15, 'b': 20},
    {'i': 2, 'a': 30, 'c': 40},
    {'i': 3, 'd': 50}
]

常见错误代码示例(仅处理部分情况)

这类代码通常因遍历效率低或逻辑漏洞,导致重复创建条目或遗漏合并:

# 错误示例:遍历结果列表查找匹配项,易出现重复添加问题
result = []
for item in input_list:
    matched = None
    for res in result:
        if res['i'] == item['i']:
            matched = res
            break
    if matched:
        matched[item['id']] = item['value']
    else:
        # 错误地直接修改原字典并添加,若同一i后续出现会重复创建
        new_item = item.copy()
        new_item[new_item['id']] = new_item['value']
        del new_item['id'], new_item['value']
        result.append(new_item)

正确实现方法

用临时字典按'i'值分组,高效完成合并,最后转为列表即可:

def merge_dicts_by_i(input_list):
    merged_groups = {}
    for item in input_list:
        i_value = item['i']
        # 初始化该i值对应的合并字典
        if i_value not in merged_groups:
            merged_groups[i_value] = {'i': i_value}
        # 将当前条目的id和value加入合并字典
        merged_groups[i_value][item['id']] = item['value']
    # 将分组字典的值转为列表,得到最终结果
    return list(merged_groups.values())

# 测试执行
input_list = [
    {'i': 1, 'id': 'a', 'value': 10},
    {'i': 1, 'id': 'b', 'value': 20},
    {'i': 2, 'id': 'a', 'value': 30},
    {'i': 2, 'id': 'c', 'value': 40},
    {'i': 3, 'id': 'd', 'value': 50},
    {'i': 1, 'id': 'a', 'value': 15}
]

print(merge_dicts_by_i(input_list))
# 输出:[{'i': 1, 'a': 15, 'b': 20}, {'i': 2, 'a': 30, 'c': 40}, {'i': 3, 'd': 50}]

逻辑说明

  • 临时字典merged_groups以原字典的'i'值为键,确保每个'i'只对应一个合并后的字典,避免重复。
  • 遍历输入时,若当前'i'已存在分组,直接追加id: value键值对;若不存在则初始化包含'i'键的新字典。
  • 同一'i'下出现重复'id'时,后续的'value'会覆盖前面的值,符合常规合并逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:07:29