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

Python实现JSON重复键的值合并(分号分隔)

处理含重复键的JSON:合并同键值为分号分隔字符串

需求

将存在重复键的JSON中,同一键对应的所有值合并为以;分隔的字符串。

输入示例

{"1061": "GROCERY",
"1073": "GM-HBC",
"4220": "PRODUCE",
"958": "MEAT",
"958": "DAIRY",
"958": "FROZEN"
}

期望输出

{"1061": "GROCERY",
"1073": "GM-HBC",
"4220": "PRODUCE",
"958": "MEAT;DAIRY;FROZEN"
}

Python实现方案

Python标准json库默认解析重复键时会直接覆盖前序值,因此需要自定义解析逻辑,通过JSONDecoder的object_pairs_hook钩子捕获所有键值对,再合并同键值:

import json

def merge_duplicate_keys(pairs):
    result = {}
    for key, value in pairs:
        if key in result:
            result[key] = f"{result[key]};{value}"
        else:
            result[key] = value
    return result

# 原始JSON字符串
raw_json = '''
{"1061": "GROCERY",
"1073": "GM-HBC",
"4220": "PRODUCE",
"958": "MEAT",
"958": "DAIRY",
"958": "FROZEN"
}
'''

# 用自定义钩子解析JSON
merged_data = json.loads(raw_json, object_pairs_hook=merge_duplicate_keys)

# 输出格式化后的JSON
print(json.dumps(merged_data, indent=2))

代码说明

  1. merge_duplicate_keys函数作为钩子,接收所有键值对的列表,遍历过程中对重复键的值进行拼接;
  2. json.loads通过object_pairs_hook参数传入自定义函数,实现保留所有键值对并合并;
  3. 最后用json.dumps格式化输出结果,确保结构清晰。

内容的提问来源于stack exchange,提问作者sornay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:27:28