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

Python按type合并字典列表同类型data数据的实现方案

合并同类型字典并将data整合成JSON数组字符串

问题描述

我有一个字典列表,需要将相同type的元素合并,并把对应的data字段中的JSON对象整合为JSON数组字符串,最终生成新的字典列表,之后会根据type提交到对应REST API。

原始数据

dict_list = [
    {'type': 'hr', 'data': '{"Name": "Name1","City": "city1", "EMail": "email1@gmail.com"}'}, 
    {'type': 'hr', 'data': '{"Name": "Name2","City": "city1", "EMail": "email2@gmail.com"}'},
    {'type': 'it', 'data': '{"Name": "Name3","City": "city3", "EMail": "email3@gmail.com"}'}, 
    {'type': 'it', 'data': '{"Name": "Name4","City": "city2", "EMail": "email4@gmail.com"}'}, 
    {'type': 'op', 'data': '{"Name": "Name5","City": "city1", "EMail": "email5@gmail.com"}'}
]

预期输出

expected_dict_list = [
    {'type':'hr', 'data':'[{"Name":"Name1","City":"city1","EMail":"email1@gmail.com"}, {"Name":"Name2","City":"city1","EMail":"email2@gmail.com"}]'},                        
    {'type':'it', 'data':'[{"Name":"Name3","City":"city3","EMail":"email3@gmail.com"},{"Name":"Name4","City":"city2","EMail":"email4@gmail.com"}]'},                        
    {'type':'op', 'data':'[{"Name":"Name5","City":"city1","EMail":"email5@gmail.com"}]'}
]

解决方案

使用Python的json模块处理JSON解析与序列化,配合字典分组实现需求:

import json

# 原始数据
dict_list = [
    {'type': 'hr', 'data': '{"Name": "Name1","City": "city1", "EMail": "email1@gmail.com"}'}, 
    {'type': 'hr', 'data': '{"Name": "Name2","City": "city1", "EMail": "email2@gmail.com"}'},
    {'type': 'it', 'data': '{"Name": "Name3","City": "city3", "EMail": "email3@gmail.com"}'}, 
    {'type': 'it', 'data': '{"Name": "Name4","City": "city2", "EMail": "email4@gmail.com"}'}, 
    {'type': 'op', 'data': '{"Name": "Name5","City": "city1", "EMail": "email5@gmail.com"}'}
]

# 按type分组,收集解析后的JSON对象
grouped_data = {}
for item in dict_list:
    type_key = item['type']
    # 解析data字段的JSON字符串为Python字典
    parsed_data = json.loads(item['data'])
    if type_key not in grouped_data:
        grouped_data[type_key] = []
    grouped_data[type_key].append(parsed_data)

# 生成最终的字典列表
result = []
for type_key, data_items in grouped_data.items():
    # 将Python列表序列化为JSON数组字符串,可选去掉空格以匹配预期格式
    json_str = json.dumps(data_items).replace(' ', '')
    result.append({'type': type_key, 'data': json_str})

# 验证结果
print(result)

代码说明

  1. 分组解析:遍历原始列表,按type作为键,将每个data字段解析为Python字典后加入对应分组列表
  2. 序列化生成结果:对每个分组的字典列表,用json.dumps转为JSON数组字符串,若需要和预期格式完全一致(无空格),可调用replace(' ', '')去除空格
  3. 生成目标列表:将每个type和对应的JSON数组字符串组合成字典,加入结果列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:28:11