使用Python解析API返回的嵌套JSON字典,提取id和symbol存入列表
问题原因
你原代码的问题出在遍历对象错误:
data是外层字典,直接遍历for x in data相当于遍历字典的两个键status、data,所以只会循环2次- 每次循环你都固定取
data['data'][0]['id'],也就是数组第一个元素的id,所以重复输出两次1
正确实现代码
方式1:基础循环写法(可读性高)
import json # 初始化存储结果的列表 result_list = [] try: response = session.get(url, params=parameters) # requests内置json解析方法,无需手动loads响应文本 data = response.json() # 正确遍历对象是data字段对应的列表 for item in data['data']: # 提取需要的字段,可按需求选择存储格式 # 格式1:存为字典,方便后续按key取值 result_list.append({ 'id': item['id'], 'symbol': item['symbol'] }) # 格式2:存为元组 (id, symbol),占用空间更小 # result_list.append( (item['id'], item['symbol']) ) except Exception as e: print(f"请求或解析出错:{e}")
方式2:列表推导式写法(更简洁)
如果不需要额外逻辑处理,直接提取可以用列表推导式简化代码:
# 存字典的推导式 result_list = [{'id': item['id'], 'symbol': item['symbol']} for item in data['data']] # 存元组的推导式 # result_list = [(item['id'], item['symbol']) for item in data['data']]
健壮性优化:可以提前判断字段是否存在,避免接口返回结构变化时报错:
if 'data' in data and isinstance(data['data'], list): for item in data['data']: # 提取逻辑
内容的提问来源于stack exchange,提问作者Sanko Hunbucse
相关产品推荐
相关产品推荐

