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

Python字典追加:整合JSON中同一人员的分散数据

解决JSON多对象合并为Python字典的问题

看起来你是想把分散在多个JSON对象里的同一人员信息,合并到同一个Python字典中对吧?我之前处理过不少类似的场景,给你分享个简单高效的实现思路:

核心逻辑

我们可以用一个字典作为最终的合并容器,遍历JSON中的每个对象,以人员唯一标识(比如user_id、person_id这类不会重复的字段)作为键,把每个对象的信息逐步合并到对应键的字典里。Python字典自带的update()方法刚好能完成这件事——它会将新的键值对合并进去,若遇到重复键,新值会覆盖旧值(如果这不符合你的需求,后面也有进阶调整方案)。

示例代码

假设你的JSON数据结构大概是这样:

[
  {"user_id": 1, "phone": "123-456-7890"},
  {"user_id": 1, "address": "123 Main St"},
  {"user_id": 2, "email": "jane@example.com"},
  {"user_id": 1, "email": "john@example.com"},
  {"user_id": 2, "phone": "987-654-3210"}
]

对应的合并代码可以这么写:

import json

# 加载JSON文件
with open('your_data.json', 'r') as f:
    raw_data = json.load(f)

# 初始化用于存储合并后数据的字典
merged_people = {}

# 遍历每个原始数据对象
for item in raw_data:
    # 提取唯一标识作为键(这里假设是user_id,你可以换成自己的字段)
    person_key = item['user_id']
    
    # 如果该标识还没在合并字典中,先初始化一个空字典
    if person_key not in merged_people:
        merged_people[person_key] = {}
    
    # 将当前对象的信息合并到对应字典中
    merged_people[person_key].update(item)

# 打印查看合并结果
for pid, details in merged_people.items():
    print(f"人员ID {pid}: {details}")

运行后输出会是:

人员ID 1: {'user_id': 1, 'phone': '123-456-7890', 'address': '123 Main St', 'email': 'john@example.com'}
人员ID 2: {'user_id': 2, 'email': 'jane@example.com', 'phone': '987-654-3210'}

进阶调整:保留重复字段的多值

如果遇到同一个字段有多个值(比如同一个人有两个手机号),不想覆盖旧值而是存为列表,可以修改逻辑:

for item in raw_data:
    person_key = item['user_id']
    if person_key not in merged_people:
        merged_people[person_key] = {}
    
    for key, value in item.items():
        if key in merged_people[person_key]:
            # 若已存在该键,先将单值转为列表再追加新值
            if not isinstance(merged_people[person_key][key], list):
                merged_people[person_key][key] = [merged_people[person_key][key]]
            merged_people[person_key][key].append(value)
        else:
            merged_people[person_key][key] = value

这样同一个人的多个手机号会被存成["123-456-7890", "456-789-0123"]的形式。

注意事项

  • 务必确保你用的唯一标识字段是真正唯一的,否则会错误合并不同人员的数据。
  • 如果原始数据里没有统一的唯一标识,可以考虑用组合键(比如姓名+生日),但要注意这种组合仍有重复风险,最好提前做数据校验。

你可以根据自己的实际数据结构调整上面的代码,要是还有具体的细节问题(比如某个特殊字段的处理),随时补充说明!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:04:25