在Python中深度合并JSON的字典(dict)和列表(list)可以通过使用递归和条件语句来实现。
对于字典的深度合并,可以定义一个递归函数来遍历两个字典,将相同键的值进行合并,而对于不同键的值则直接添加到结果字典中。以下是一个示例代码:
def merge_dicts(dict1, dict2):
result = dict1.copy()
for key, value in dict2.items():
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
result[key] = merge_dicts(result[key], value)
else:
result[key] = value
return result
示例用法:
dict1 = {
"name": "John",
"age": 25,
"address": {
"street": "123 Street",
"city": "New York"
}
}
dict2 = {
"age": 26,
"address": {
"city": "San Francisco",
"state": "California"
},
"phone": "123-456-7890"
}
merged_dict = merge_dicts(dict1, dict2)
print(merged_dict)
输出结果:
{
"name": "John",
"age": 26,
"address": {
"street": "123 Street",
"city": "San Francisco",
"state": "California"
},
"phone": "123-456-7890"
}
对于列表的深度合并,可以使用类似的递归方法来遍历两个列表,将对应位置的元素进行合并。以下是一个示例代码:
def merge_lists(list1, list2):
result = []
for i in range(max(len(list1), len(list2))):
if i < len(list1) and i < len(list2) and isinstance(list1[i], dict) and isinstance(list2[i], dict):
result.append(merge_dicts(list1[i], list2[i]))
elif i < len(list1):
result.append(list1[i])
elif i < len(list2):
result.append(list2[i])
return result
示例用法:
list1 = [
{"name": "John", "age": 25},
{"name": "Alice", "age": 30}
]
list2 = [
{"age": 26, "address": "123 Street"},
{"name": "Bob", "age": 35}
]
merged_list = merge_lists(list1, list2)
print(merged_list)
输出结果:
[
{"name": "John", "age": 26, "address": "123 Street"},
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 35}
]
这样就能够在Python中深度合并JSON的字典和列表。请注意,这只是示例代码,实际使用时需要根据具体需求进行适当的修改和优化。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择和使用需根据实际需求进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云