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

Python如何批量解析API返回的嵌套列表字典,提取指定字段

问题描述

有一个名为places_info的列表,每个元素是包含results和context的字典。其中results是字典组成的列表,每个子字典包含location(地址信息字典)、name、rating字段。当前代码只能提取每个results中第一个元素的对应字段,需要批量提取所有结果的name、rating、location信息,分别存入names、ratings、locations变量。

当前尝试的代码:

results = [place['results'] for place in places_info]
names = [place[0]['name'] for place in results]
ratings = [place[0]['ratings'] for place in results]  # 注意:字段名应为rating
locations = [place[0]['locations'] for place in results]  # 注意:字段名应为location

places_info部分数据结构示例:

[
    {
        'results': [
            {
                'location': {'address': '150 Greenwood Ave',...},
                'name': 'Leslieville Farmers Market',
                'rating': 9.1
            },
            ...  # 更多结果元素
        ],
        'context': {...}
    },
    ...  # 更多place元素
]

解决方案

要提取所有results中的元素,需要遍历每个place下的全部results子元素,以下是两种实现方式:

方法1:先扁平化所有结果,再提取字段

先把嵌套在各个place里的results元素全部整合到一个列表,再分别提取对应字段,逻辑更清晰:

# 扁平化所有results里的元素
all_results = [item for place in places_info for item in place['results']]

# 分别提取各个字段
names = [item['name'] for item in all_results]
ratings = [item['rating'] for item in all_results]
locations = [item['location'] for item in all_results]

方法2:直接用嵌套列表推导式生成目标列表

如果不需要保留扁平化后的all_results,可以直接通过双层推导式生成三个变量:

names = [item['name'] for place in places_info for item in place['results']]
ratings = [item['rating'] for place in places_info for item in place['results']]
locations = [item['location'] for place in places_info for item in place['results']]

关键修正点

  1. 原代码仅取每个place['results']的第一个元素(place[0]),通过双层循环(外层遍历places_info,内层遍历每个place['results'])可覆盖所有结果元素。
  2. 原代码字段名错误:数据结构中是rating和location,需修正对应字段名才能正确提取数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:04:54