You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:07:18