Python如何遍历API返回的用户列表 提取所有id属性存入新列表
提取用户id的实现方案
一、先修正原有函数的问题
你当前代码里的函数返回的是json.dumps()序列化后的JSON字符串,无法直接遍历提取字段,需要修改为返回原始的Python列表对象,同时优化冗余代码:
import requests import json def get_all_time_entries(): url_address = "my url" headers = { "Authorization": "Bearer " + "my api", "Harvest-Account-ID": "my ID" } all_time_entries = [] # 遍历所有分页获取JSON对象,range循环会自动递增page,不需要手动加1 for page in range(1, 15): url = "my url"+str(page) response = requests.get(url=url, headers=headers).json() # 如果接口返回的用户列表嵌套在某个字段下,比如response["users"],这里要改成extend对应字段 all_time_entries.append(response) # 不需要序列化,直接返回原始列表即可 return all_time_entries
二、循环提取所有id存入新列表
方法1:基础for循环实现(符合你要求的循环写法)
# 先调用函数拿到原始用户数据列表 all_user_data = get_all_time_entries() # 初始化存储id的空列表 user_id_list = [] for user in all_user_data: # 提取id字段,用get方法可以避免无id字段时报错 current_id = user.get("id") user_id_list.append(current_id) # 可以打印查看结果 print(user_id_list)
方法2:更简洁的列表推导式实现
all_user_data = get_all_time_entries() user_id_list = [user.get("id") for user in all_user_data]
补充说明:如果你的分页接口返回的结构里,用户列表是嵌套在
data/users这类下级字段中,需要把all_time_entries.append(response)改为all_time_entries.extend(response["对应字段名"]),否则你拿到的列表元素是分页响应对象而不是用户对象。
内容的提问来源于stack exchange,提问作者Dinh Chuong
相关产品推荐
相关产品推荐

