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

Python如何将嵌套JSON字典提取为独立索引项?

提取嵌套sub_accounts为独立索引项的解决方案

要将所有层级的sub_accounts嵌套对象提取为独立的索引项,递归遍历是最直接的方案,能处理任意深度的嵌套结构,且完全剥离子账户与父账户的关联。

核心思路

  1. 遍历每个账户对象,先将当前账户作为独立条目加入结果列表
  2. 取出当前账户的sub_accounts列表,对每个子账户递归执行相同操作
  3. 将递归得到的子账户结果合并到总列表中

代码实现

def extract_accounts(account):
    # 复制当前账户对象,避免修改原始数据
    current_account = account.copy()
    # 取出子账户列表(若不存在则返回空列表)
    sub_accounts = current_account.pop('sub_accounts', [])
    # 初始化结果列表,先加入当前账户
    result = [current_account]
    # 递归处理每个子账户,合并结果
    for sub_acc in sub_accounts:
        result.extend(extract_accounts(sub_acc))
    return result

# 修正后的示例数据
sample_account = {
    "classification": [
        {
            "classificationId": "Cash",
            "taxonomyId": "accounting.gp"
        }
    ],
    "id": "235",
    "kind": "Real",
    "name": "Checking",
    "sub_accounts": [
        {
            "classification": [
                {
                    "classificationId": "Cash",
                    "taxonomyId": "accounting.gp"
                }
            ],
            "id": "236",
            "kind": "Real",
            "name": "Cash Reserve",
            "sub_accounts": []
        }
    ]
}

# 提取所有独立账户
all_independent_accounts = extract_accounts(sample_account)
print(all_independent_accounts)

处理多顶级账户场景

如果原始数据是包含多个顶级账户的列表,只需遍历每个账户并合并结果:

# 假设有多个顶级账户的列表
account_list = [sample_account, another_top_level_account]
all_accounts = []
for acc in account_list:
    all_accounts.extend(extract_accounts(acc))

说明

  • 该方案会自动移除每个账户对象中的sub_accounts字段(若需要保留该字段,删除current_account.pop('sub_accounts', [])这一行即可)
  • 递归逻辑支持任意深度的嵌套子账户,无论有多少层子账户都能被提取为独立条目
  • 与json_normalize或简单pop的区别:前者会保留父级关联,后者仅能处理一层嵌套,递归方案彻底剥离关联且支持全层级提取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:48:24