如何根据指定rate范围从API返回数据中提取指定字段?
问题:提取API返回数据中符合特定rate范围的字段
API返回的数据格式如下:
[ {"rate":2.5,"price":123,"userAsset":{"userId":123,"userAssetId":123,"asset":{"assetId":"notrelevant"}},"isBeingPurchased":"notrelevant"}, {"rate":1.5,"price":456,"userAsset":{"userId":456,"userAssetId":456,"asset":{"assetId":"notrelevant"}},"isBeingPurchased":"notrelevant"} ]
需求:提取rate值在0.1到2之间的条目,获取其中的userId、userAssetId和price字段。
用户尝试的代码(无法正确过滤数据):
import numpy as np import requests # Get the info from the API r = requests.get('https://myapi.com/shop') # Convert the info to a dictionary data = r.json() # Get the rates from the dictionary for value in data: rates = print(value['rate']) print(rates) # Get the info needed later for certain items with a specific rate for rates in np.arange(0.1, 2): user_asset_id = value['userAsset']['userAssetId'] user_id = value['userAsset']['userId'] relative_price = value['price'] print(user_asset_id, user_id, relative_price)
错误原因
- 内层循环
for rates in np.arange(0.1, 2)逻辑错误:这是在遍历0.1到2之间的一系列数值,而非判断当前条目的rate是否落在这个区间里,导致每个条目都会被循环多次并输出数据。 rates = print(value['rate'])无实际作用:print()函数返回None,这个赋值操作对后续逻辑没有帮助。
修正后的代码
不需要引入numpy,直接用条件判断过滤即可:
import requests # 获取API数据 r = requests.get('https://myapi.com/shop') data = r.json() # 遍历并过滤符合条件的条目 for item in data: rate = item['rate'] # 判断rate是否在目标范围内(包含边界值) if 0.1 <= rate <= 2: user_id = item['userAsset']['userId'] user_asset_id = item['userAsset']['userAssetId'] price = item['price'] print(user_asset_id, user_id, price)
如果需要将结果保存为列表(方便后续处理),可以这样写:
import requests r = requests.get('https://myapi.com/shop') data = r.json() filtered_items = [] for item in data: rate = item['rate'] if 0.1 <= rate <= 2: filtered_items.append({ 'userId': item['userAsset']['userId'], 'userAssetId': item['userAsset']['userAssetId'], 'price': item['price'] }) # 输出结果 for item in filtered_items: print(item['userAssetId'], item['userId'], item['price'])
内容的提问来源于stack exchange,提问作者AGoat
相关产品推荐
相关产品推荐

