我有两个字典的格式如下:
d1 = { "root" : { "leaf" : [diff1, diff2] }}
d2 = { "root" : { "leaf": [diff3], "node": { "leaf" : [diff1] } } }
我希望能够将它们组合成这样一个结果:
d3 = {'root': {'leaf': ['diff1', 'diff2', 'diff 3'], 'node': {'leaf': ['diff 1']}}}
对于任何给定的输入,递归的级别都是未定义的,但是每个“叶节点”都将是一个数组,如果每个字典中的叶节点都有一个数组,那么我将合并这个数组。注意:这些键实际上不是“node”和“leaf”,我只是用这些键来帮助说明示例
这段代码似乎用第二段代码完全覆盖了我的数组:
d3 = {**d1, **d2}
产生
result = {'root': {'leaf': ['diff 3'], 'node': {'leaf': ['diff 1']}}}
您可以使用递归函数来实现这一点。注意,这只会合并列表,而不会合并元组或任何其他类型的序列:
如果调用
merge_dicts({'key': 'value'}, {'key': 'different_value'})
,您还没有定义要做什么。我让它引发了一个ValueError,因为我认为您不能合并这两个dict(您将使用哪个值?),但是如果您想从其中一个dict中选择值作为默认值,您可以更改它未经测试,但类似的方法应该有效:
相关问题 更多 >
编程相关推荐