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

如何在Python中提取嵌套列表内嵌套字典中的id值

提取嵌套字典列表中所有"id"值的解决方案

首先得先理清你的数据结构:y是一个混合了字典和列表的嵌套集合——第一个元素是元数据字典,第二个元素是装了单个字典的列表,而这个字典里还嵌套了多个子字典(比如adminregion、incomeLevel这类),这些子字典也包含id键。

你之前的两种方法都没覆盖到嵌套层级的id:

  • 第一种列表推导式只拿到了外层字典的id(也就是ABW),完全没处理嵌套的子字典
  • 第二种嵌套循环只是遍历了外层字典的键,没深入到子字典里去查找id

通用解决方案:递归遍历(推荐)

因为嵌套结构可能有任意深度,写个递归函数是最稳妥的方式,能自动处理所有层级的id:

def extract_all_ids(data):
    collected_ids = []
    # 处理列表:遍历每个元素递归提取
    if isinstance(data, list):
        for item in data:
            collected_ids.extend(extract_all_ids(item))
    # 处理字典:先检查自身有没有id,再遍历值递归提取
    elif isinstance(data, dict):
        if 'id' in data:
            collected_ids.append(data['id'])
        for value in data.values():
            collected_ids.extend(extract_all_ids(value))
    # 非列表/字典的类型直接忽略
    return collected_ids

# 调用函数提取所有id
all_ids = extract_all_ids(y)
print(all_ids)

运行后你会得到所有层级的id:

['', '', 'ABW', 'HIC', 'LNX', 'LCN']

如果想过滤掉空字符串的id,只要在添加的时候加个判断就行:

if 'id' in data and data['id'].strip() != '':
    collected_ids.append(data['id'])

过滤后的结果就是:

['ABW', 'HIC', 'LNX', 'LCN']

针对当前特定结构的快速写法(不通用)

如果你确定数据结构不会变,也可以手动遍历固定层级,但这种方式扩展性很差,结构一变就失效:

# 先拿到目标字典(y[1]是列表,取第一个元素)
target = y[1][0]
all_ids = [
    target['id'],
    target['adminregion']['id'],
    target['incomeLevel']['id'],
    target['lendingType']['id'],
    target['region']['id']
]
print(all_ids)

还是更推荐递归的方式,不管后续数据有没有新增嵌套层级,都能正确提取所有id,之后你就可以把这些id存入数据库啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:20:15