Python中基于指定列合并多JSON文件并去重的简便方法
合并多JSON文件并按userid去重的简便方法
你可以直接用Python脚本一次性完成**读取多个JSON文件、合并数据、按userid去重(保留最后出现的条目)**的操作,无需手动合并文件。以下是优化后的实现:
完整代码
import json from pathlib import Path # 替换为你的目标JSON文件路径,支持多个文件 input_files = ["第一个JSON文件.json", "第二个JSON文件.json"] # 若要匹配当前目录下所有JSON文件,可替换为: # input_files = list(Path(".").glob("*.json")) # 用字典存储去重后的用户数据,userid作为唯一键 user_map = {} for file_path in input_files: with open(file_path, 'r', encoding='utf-8') as f: file_data = json.load(f) for user in file_data: # 重复userid会自动覆盖为最后一次出现的条目,符合你的示例需求 user_map[user['userid']] = user # 将字典转换为列表格式 unique_user_list = list(user_map.values()) # 写入最终结果文件 with open('合并去重后的结果.json', 'w', encoding='utf-8') as out_file: json.dump(unique_user_list, out_file, indent=4, ensure_ascii=False)
关键说明
- 自动处理多文件:脚本会遍历你指定的所有JSON文件,无需手动提前合并
- 去重逻辑适配:默认保留最后一次出现的重复userid条目(和你的示例输出一致);如果需要保留第一次出现的条目,只需修改遍历部分的代码:
for user in file_data: if user['userid'] not in user_map: user_map[user['userid']] = user - 字符编码兼容:
ensure_ascii=False确保输出文件能正确保留非ASCII字符(比如示例中的特殊名称)
内容的提问来源于stack exchange,提问作者James Black
相关产品推荐
相关产品推荐

