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

Python如何按pos字段匹配合并两组含嵌套列表的字典列表

实现代码

def join_data(data_1, data_2):
    # 临时字典用于按pos值聚合paths数据
    pos_map = {}
    # 遍历第一个数据集写入数据
    for item in data_1:
        pos = item["pos"]
        if pos not in pos_map:
            pos_map[pos] = []
        pos_map[pos].extend(item["paths"])
    # 遍历第二个数据集写入数据
    for item in data_2:
        pos = item["pos"]
        if pos not in pos_map:
            pos_map[pos] = []
        pos_map[pos].extend(item["paths"])
    # 转换为要求的输出结构
    joined_data = [{"paths": paths, "pos": pos} for pos, paths in pos_map.items()]
    # 可选补充:如果需要严格按pos从小到大排序,可取消注释下方代码
    # joined_data.sort(key=lambda x: x["pos"])
    return joined_data

验证测试

使用你给出的示例输入运行:

data_1 = [{'paths': [[1,2,3]],  'pos': 1}, {'paths': [[1,2,3]], 'pos': 2},]
data_2 = [{'paths': [[6,7,8]],  'pos': 1}, {'paths': [[4,5,6]], 'pos': 2},]

print(join_data(data_1, data_2))

输出结果完全匹配要求的结构:

[{'paths': [[1, 2, 3], [6, 7, 8]], 'pos': 1}, {'paths': [[1, 2, 3], [4, 5, 6]], 'pos': 2}]

补充说明

如果业务要求仅保留同时在两个输入列表中存在的pos对应的数据,可在生成最终joined_data前,增加逻辑过滤掉只在一个列表中出现过的pos即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:05