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

如何高效合并Python中同id的字典列表元素

按ID合并字典列表的高效循环实现

嘿,这个需求在日常数据处理里挺常见的!用循环实现的话,咱们可以靠一个临时字典来快速聚合相同ID的键值对,这样能保证效率是线性的——毕竟每个元素只需要遍历一次,这已经是循环方案里的最优表现啦。

直接上代码,再给你拆解逻辑:

values = [{'id':1, 'x':2}, {'id':1, 'y':4}, {'id':1, 'z':6}, {'id':2, 'j':5}, {'id':2, 'k':10}, {'id':3, 'w':1}, {'id':3, 'x':3}, {'id':3, 'y':5}, {'id':3, 'z':7}]

# 用临时字典存分组结果:key是id,value是合并后的完整字典
merged_groups = {}
for item in values:
    current_id = item['id']
    # 如果这个ID还没在分组里,先初始化一个带ID的空字典
    if current_id not in merged_groups:
        merged_groups[current_id] = {'id': current_id}
    # 把当前item的所有键值对合并到对应分组里
    merged_groups[current_id].update(item)

# 把字典的values转成列表,就是最终想要的结果
final_result = list(merged_groups.values())
print(final_result)

为啥这个方法效率高?

  • 全程只遍历原列表一次,时间复杂度是O(n)(n是原列表元素总数),这是循环能做到的最优效率了。
  • 字典的in判断和update操作平均都是O(1)的时间开销,不会拖慢整体速度。
  • 最后转列表的操作只处理不同ID的分组,开销远小于遍历原列表。

小补充

如果原列表里同一个ID下不会出现重复的键(比如不会有两个{'id':1, 'x':3}这种条目),那这个方案完全没问题;要是有重复键,后面的条目会覆盖前面的,这也是常规合并逻辑里的默认行为哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:55:37