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
相关产品推荐
相关产品推荐

