如何用Python合并相同NameId的JSON对象并合并exp字段
可以用Python实现这个需求
实现思路
通过字典按NameId分组,将相同NameId对应的exp字段合并,最后把分组后的字典转换为目标列表格式即可。
代码示例
import json # 原始JSON数据 raw_json = ''' [{ "NameId": "name1", "exp": { "exp1": "test1" } }, { "NameId": "name1", "exp": { "exp2": "test2" } }] ''' # 解析JSON为Python对象 data_list = json.loads(raw_json) # 初始化分组字典,用于合并数据 merged_groups = {} for item in data_list: name_id = item["NameId"] # 若该NameId未被记录,初始化合并后的结构 if name_id not in merged_groups: merged_groups[name_id] = { "NameId": name_id, "exp": {} } # 合并exp字段,重复的exp键会被后续值覆盖 merged_groups[name_id]["exp"].update(item["exp"]) # 将字典值转换为最终的列表格式 result = list(merged_groups.values()) # 打印格式化后的结果 print(json.dumps(result, indent=2))
代码说明
- 用
json.loads()将原始JSON字符串解析为Python列表,方便遍历处理; - 借助字典
merged_groups以NameId为键,统一存储相同ID的合并数据; - 遍历原始列表时,若当前
NameId是首次出现,就创建包含NameId和空exp字典的条目; - 用字典的
update()方法,把当前对象的exp键值对合并到对应条目的exp中; - 最后将字典的所有值转为列表,就是去重并合并后的目标数据。
运行结果
[ { "NameId": "name1", "exp": { "exp1": "test1", "exp2": "test2" } } ]
内容的提问来源于stack exchange,提问作者Geebee
相关产品推荐
相关产品推荐

