Python实现JSON基于双键值对的重复元素删除
解决思路
用Python处理(通用方案)
先将JSON数据解析为Python数据结构,利用集合的去重特性跟踪已出现的name+city组合,最终提取唯一组合:
import json # 加载原始JSON(注意JSON规范要求双引号,若原始数据是单引号需先替换) raw_data = ''' [ {"name": "anna", "city": "paris","code": "5"}, {"name": "anna", "city": "paris","code": "2"}, {"name": "henry", "city": "london","code": "1"}, {"name": "henry", "city": "london","code": "3"} ] ''' data = json.loads(raw_data) seen_combinations = set() unique_results = [] for item in data: # 用元组存储name+city作为唯一标识(元组可哈希,能存入集合) combo = (item["name"], item["city"]) if combo not in seen_combinations: seen_combinations.add(combo) unique_results.append({"name": item["name"], "city": item["city"]}) # 输出格式化后的JSON结果 print(json.dumps(unique_results, indent=2))
运行后会输出:
[ { "name": "anna", "city": "paris" }, { "name": "henry", "city": "london" } ]
用jq命令行工具(快速终端处理)
如果习惯用命令行处理JSON,可直接用jq工具一键完成:
# 假设原始数据存在input.json文件中 jq 'unique_by(.name, .city) | map({name, city})' input.json
unique_by(.name, .city):按name和city的组合去重,保留每个组合的第一个元素map({name, city}):过滤掉多余字段,只保留name和city
内容的提问来源于stack exchange,提问作者Emericdt
相关产品推荐
相关产品推荐

