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

如何合并两个字典数组,按x字段匹配并补全缺失值?

合并字典数组并按指定键匹配补全字段

可以通过构建映射字典+遍历合并的方式高效实现需求,步骤如下:

  1. 先将第二个数组second转换为以x字段为键、b字段为值的映射字典,后续查找匹配项的时间复杂度为O(1);
  2. 遍历第一个数组first,对每个字典进行复制并补充b字段——如果在映射字典中找到对应x的值则填入,否则设为None。

完整代码示例

first = [{'x': 'name1', 'a': '333'}, {'x': 'name2', 'a': '234'}, {'x': 'name3', 'a': '432'}, {'x': 'name4', 'a': '943'}, {'x': 'name5', 'a': '643'}]
second = [{'x': 'name1', 'b': '1333'}, {'x': 'name2', 'b': '1234'}, {'x': 'name3', 'b': '1432'}, {'x': 'name4', 'b': '1943'}]

# 构建x到b的快速映射
second_b_map = {item['x']: item['b'] for item in second}

# 生成合并后的结果数组
result = [
    {**item, 'b': second_b_map.get(item['x'], None)}
    for item in first
]

print(result)

代码说明

  • 用字典推导式构建second_b_map,把second里的元素按x分组,快速定位对应的b值;
  • 利用字典解包**item复制原字典,再通过get方法设置b字段——get的第二个参数是找不到匹配时的默认值(这里设为None);
  • 整体时间复杂度为O(n+m)(n是first长度,m是second长度),比嵌套循环的O(n*m)效率更高,适合处理大数据量场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:35:18