在Python中深度合并JSON的dicts和lists可以通过递归函数来实现。以下是一个示例代码,展示了如何进行深度合并:
def deep_merge(dict1, dict2):
"""
深度合并两个字典,如果键相同,则递归合并值。
如果值是列表,则将两个列表合并。
"""
for key in dict2:
if key in dict1:
if isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
deep_merge(dict1[key], dict2[key])
elif isinstance(dict1[key], list) and isinstance(dict2[key], list):
dict1[key].extend(dict2[key])
else:
dict1[key] = dict2[key]
else:
dict1[key] = dict2[key]
return dict1
# 示例用法
dict1 = {
"a": 1,
"b": {"c": 2, "d": [3, 4]},
"e": [5, 6]
}
dict2 = {
"b": {"d": [7], "f": 8},
"e": [9],
"g": 10
}
merged_dict = deep_merge(dict1, dict2)
print(merged_dict)
问题:如果两个列表中有相同的元素,如何处理? 解决方法:可以在合并列表前进行去重,或者在合并时使用集合操作来确保唯一性。
def deep_merge_unique(dict1, dict2):
for key in dict2:
if key in dict1:
if isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
deep_merge_unique(dict1[key], dict2[key])
elif isinstance(dict1[key], list) and isinstance(dict2[key], list):
dict1[key] = list(set(dict1[key] + dict2[key]))
else:
dict1[key] = dict2[key]
else:
dict1[key] = dict2[key]
return dict1
通过这种方式,可以灵活地处理各种复杂的数据合并需求。
领取专属 10元无门槛券
手把手带您无忧上云