我正在寻找一种方法来合并多个dict,其中也包含嵌套dict。嵌套dict的数量不是静态的而是动态的。在
最后一个dict应该包含dict的所有dict及其值的总和:
COUNTRY1 = {'a': {'X': 10, 'Y': 18, 'Z': 17}, 'b': {'AA':{'AAx':45,'AAy':22},'BB':{'BBx':45,'BBy':22}}, 'c': 100}
COUNTRY2 = {'a': {'U': 12, 'V': 34, 'W': 23}, 'b': {'AA':{'AAz':23,'AAa':26},'BB':{'BBz':11,'BBa':15}}, 'c': 115}
COUNTRY3 = {'a': {'Y': 15, 'Z': 14, 'X': 12}, 'b': {'AA':{'AAx':45,'AAz':22},'BB':{'BBy':45,'BBz':22}}, 'c': 232}
# After merging the dictionaries the result should look like:
ALL
>>> {'a': {'X': 22, 'Y': 33, 'Z': 31, 'U': 12, 'V': 34, 'W': 23}, 'b': {'AA':{'AAx':90,'AAy':22,'AAz':45,'AAa':26},'BB':{'BBx':45,'BBy':67, 'BBz':33,'BBa':15}}, 'c': 447}
我尝试了以下代码,它允许嵌套dict最多3个嵌套dict。不幸的是,代码没有达到我预期的效果。因此它看起来不是很干净,我觉得这可以用递归函数来完成,但是我找不到方法来做。在
^{pr2}$
做如下两个函数:
按如下方式调用上述代码将生成所需的输出:
^{pr2}$问题是,您需要根据值的类型来决定如何处理字典键。基本思路是:
这是相当容易实现的理解:
复制确保
d2
中不在d1
中的任何键都被简单地复制。在您现在可以总结如下:
^{pr2}$一般来说,您可以使用^{} 对不确定数量的词典执行此操作:
相关问题 更多 >
编程相关推荐