在Python中合并字典 - 不能按预期工作

时间:2015-01-26 19:21:04

标签: python dictionary merge

我正在寻找一种通过dict(a.items()+b.items())以外的其他方式合并词典的方法。

示例:

foo = {'cart':
  {'item':
    {'1':
      {'amount':
        'X',
      },
    },
  },
}

bar = {'cart': 
  {'item':
    {'2': 
      {'amount': 
        'Y',
      },
    },
  },
}

通缉结果:

res = {'cart':
  {'item':
    {'1':
      {'amount':
        'X'
      },
    },
    {'2': 
      {'amount': 
        'Y',
      },
    },
  },
}

实际结果(获得bei dict(foo.items()+ bar.items()):

res = {'cart':
  {'item':
    {'2': 
      {'amount': 
        'Y',
      },
    },
  },
}

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

发现代码片段对我的用例表现相当不错:

def deepupdate(original, update):
    """
    Recursively update a dict.
    Subdict's won't be overwritten but also updated.
    """
    for key, value in original.iteritems():
        if not key in update:
            update[key] = value
        elif isinstance(value, dict):
            deepupdate(value, update[key])
    return update