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))
代码说明
merge_duplicate_keys函数作为钩子,接收所有键值对的列表,遍历过程中对重复键的值进行拼接;json.loads通过object_pairs_hook参数传入自定义函数,实现保留所有键值对并合并;- 最后用
json.dumps格式化输出结果,确保结构清晰。
内容的提问来源于stack exchange,提问作者sornay
相关产品推荐
相关产品推荐

