Python中如何合并键相同、值为数组类型的两个嵌套字典
字典合并解决方案
首先修正你给出的d1的语法错误(原书写中键2对应的列表末尾游离了一个numpy数组,已将其归入键2的列表中),再按要求实现穿插合并逻辑,完整代码如下:
import numpy as np from numpy import array, int64 # 修正语法后的原始字典 d1 = { 0: [array([ 42.9017, -78.6631]), array([ 41.5372, -74.0526]), array([ 39.8017, -89.6437])], 1: [array([ 34.7269, -86.5673]), array([ 29.7229, -98.0742])], 2: [array([ 35.9878, -115.1167]), array([ 34.0316, -117.6187]), array([ 61.6303, -148.9872])] } d2 = { 0: [array([5, 5], dtype=int64), array([44, 44], dtype=int64), array([1, 1], dtype=int64)], 1: [array([1, 1], dtype=int64), array([12, 12], dtype=int64), array([1, 1], dtype=int64)], 2: [array([1, 1], dtype=int64), array([12, 12], dtype=int64), array([1, 1], dtype=int64)] } # 核心合并逻辑 d3 = {} for key in d1: l1, l2 = d1[key], d2[key] merged = [] # 逐位置穿插元素 for item1, item2 in zip(l1, l2): merged.append(item1) merged.append(item2) # 追加长度不一致时的剩余元素 merged.extend(l1[len(l2):]) merged.extend(l2[len(l1):]) d3[key] = merged
执行后得到的d3完全符合你要求的穿插规则:同一个键下,d1对应位置数组和d2对应位置数组依次排列,剩余元素自动追加到列表末尾。
内容的提问来源于stack exchange,提问作者Sparsh_ag
相关产品推荐
相关产品推荐

