Python:合并3个含重复键的JSON文件并保留最后文件内容
使用Python合并多个JSON文件并保留最后一个文件的重复键内容
问题描述
现有三个JSON文件,部分顶级键存在重复,需要合并为一个JSON文件,合并规则为:重复的键以最后一个文件中的内容为准。
三个源文件内容如下:
// file1.json { "A111": { "KEY1" : "AAA1", "KEY2" : "AAA2" } }
// file2.json { "B222": { "KEY1" : "BBB1", "KEY2" : "BBB2" } }
// file3.json { "A111": { "KEY1" : "CCC1", "KEY2" : "CCC2" } }
期望合并后的filemerged.json内容:
{ "A111": { "KEY1" : "CCC1", "KEY2" : "CCC2" }, "B222": { "KEY1" : "BBB1", "KEY2" : "BBB2" } }
解决方案代码
使用Python的json模块即可完成需求,核心逻辑是按顺序读取文件,用后读取的字典覆盖前面的同名键:
import json # 定义要合并的文件列表,顺序必须是file1 -> file2 -> file3 files_to_merge = ["file1.json", "file2.json", "file3.json"] merged_data = {} # 遍历文件,依次合并到结果字典 for file_path in files_to_merge: with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) # 使用update方法,新字典的键会覆盖已有键 merged_data.update(data) # 将合并结果写入新文件 with open("filemerged.json", 'w', encoding='utf-8') as f: json.dump(merged_data, f, indent=2)
关键说明
- 文件顺序:必须严格按照
file1.json、file2.json、file3.json的顺序读取,因为dict.update()方法会用新字典中的键值对覆盖结果字典中已存在的同名键,这样file3.json的内容会最终保留。 - 编码处理:读取和写入时指定
encoding='utf-8',避免中文或特殊字符出现乱码问题。 - 格式化输出:
json.dump()的indent=2参数让输出的JSON文件更易读,和示例格式一致。
内容的提问来源于stack exchange,提问作者user97524
相关产品推荐
相关产品推荐

