python 合并dict
本文介绍了python 合并dict的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
现在有两个dict,这个dict有两层(如果可以自定义层数或者不限更好),想合并起来
case1:
输入:a: {1:{"171": True}} b:{1:{"172": False}}
输出:{1:{"171": True, "172": False}}
case2:
输入:a: {1:{"171": True}} b:{1:{"171": False}}
输出:{1:{"171": False}}
我使用python的dict.update方法都是只能一层,不知道有没有好的实现方法?
解决方案
随手写了一个 应对多层 dictionary 的 merge
from itertools import chain
from functools import reduce
def deep_merge_func(acc, item):
if not acc:
acc = {}
k, v = item
if isinstance(v, dict):
original_v = acc.get(k)
if original_v and isinstance(original_v, dict):
return {**acc, k: deep_merge(original_v, v)}
return {**acc, k: v}
def deep_merge(origin, target):
return reduce(deep_merge_func, chain(origin.items(), target.items()), None)
a = {1: {"171": True}}
b = {1: {"171": False}}
print(deep_merge(a, b))
c = {1: {"171": True}}
d = {1: {"172": False}}
print(deep_merge(c ,d))
只测试了 python3.6.1 你只需要调用 deep_merge 就行了
写得比较 functional 不要怪我
这篇关于python 合并dict的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文