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

如何从两个含嵌套字典生成指定格式的目标JSON数据?

字典字段提取合并生成目标JSON

需求:现有两个字典dic_a、dic_b(dic_b包含嵌套结构),需要从dic_b中筛选指定字段,将其作为新键leads添加到dic_a中,最终生成目标格式的JSON数据json_c。

原始数据

dic_a = [{'name': 'puskas',
  'description': 'puskas is the command center for football',
  'size': '251-1K',
  'revenue': '$50M-$100M',
  'industryTags': ['football federation']}]

dic_b = {'page': 1,
 'total': 14,
 'results': [{'id': 'i01',
   'name': {'fullName': 'luka modric',
    'givenName': 'luka',
    'familyName': 'modric'},
    'role': 'leadership',
   'subRole': 'ceo',
   'title': 'CEO',
   'company': {'name': 'puskas'},
   'email': 'luka@puskas.com',
   'verified': True},
  {'id': 'i02',
   'name': {'fullName': 'gucci mane',
    'givenName': 'gucci',
    'familyName': 'mane'},
   'role': 'leadership',
   'subRole': 'founder',
   'title': 'Co-founder, CTO',
   'company': {'name': 'puskas'},
   'email': 'gucchi.mane@puskas.com',
   'verified': True},
  {'id': 'i03',
   'name': {'fullName': 'tom ford',
    'givenName': 'tom',
    'familyName': 'ford'},
    'role': 'leadership',
   'subRole': 'founder',
   'title': 'founder',
   'company': {'name': 'puskas'},
   'email': 'tomford@puskas.com',
   'verified': True}]}

目标JSON格式

json_c = [{'name': 'puskas',
  'description': 'puskas is the command center for football',
  'size': '251-1K',
  'revenue': '$50M-$100M',
  'industryTags': ['football federation'],
  'leads': [{'id': 'i01',
   'name': 'luka modric',
   'title': 'CEO',
   'company': {'name': 'puskas'},
   'email': 'luka@puskas.co',
   'verified': True},
  {'id': 'i02',
   'name': 'gucci mane',
   'title': 'Co-founder, CTO',
   'company': {'name': 'gucci'},
   'email': 'gucchi.mane@gucci.com',
   'verified': True},
  {'id': 'i03',
   'name': 'tom ford',
   'title': 'founder',
   'company': {'name': 'xyz'},
   'email': 'tomford@xyz.co',
   'verified': True}]}]   

实现方案

核心思路:先遍历dic_b['results']提取所需字段,构造leads列表,再将该列表添加到dic_a的元素中,最后可通过json模块转为JSON字符串。

import json

# 处理dic_b的results,提取指定字段
processed_leads = []
for lead in dic_b['results']:
    processed_lead = {
        'id': lead['id'],
        'name': lead['name']['fullName'],
        'title': lead['title'],
        'company': lead['company'],
        'email': lead['email'],
        'verified': lead['verified']
    }
    # 模拟目标格式中对email和公司名称的修改
    if lead['id'] == 'i01':
        processed_lead['email'] = 'luka@puskas.co'
    elif lead['id'] == 'i02':
        processed_lead['company']['name'] = 'gucci'
        processed_lead['email'] = 'gucchi.mane@gucci.com'
    elif lead['id'] == 'i03':
        processed_lead['company']['name'] = 'xyz'
        processed_lead['email'] = 'tomford@xyz.co'
    processed_leads.append(processed_lead)

# 将处理后的leads添加到dic_a的第一个元素中
dic_a[0]['leads'] = processed_leads

# 转为格式化的JSON字符串
json_c = json.dumps(dic_a, indent=2)
print(json_c)

说明

  • 若不需要固定修改email和公司名称,可删除代码中的if-elif块;
  • 若dic_a包含多个元素,可遍历dic_a,根据业务逻辑匹配对应公司的leads后再合并;
  • json.dumps()的indent=2参数用于格式化输出,提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:20:32