如何用Python从API小时级JSON数据中保留每日第24条对象
保留每日第24条小时级JSON数据的实现方法
需求:API返回的JSON响应中,data字段包含小时级数据,每天对应24个JSON对象,需保留每天的第24个对象(即当天最后一条数据),删除其余条目。
示例JSON结构
{ "data": [ { "date": "Apr 01 2022", "volume": 75, "users": 26, "trades": 43, "fee": 0, "shared_fee": 0 }, // ... 当日其余22条数据省略 { "date": "Apr 01 2022", "volume": 151, "users": 35, "trades": 305, "fee": 0, "shared_fee": 0 }, { "date": "Apr 02 2022", "volume": 42, "users": 13, "trades": 25, "fee": 0, "shared_fee": 0 }, // ... 当日其余22条数据省略 { "date": "Apr 02 2022", "volume": 130, "users": 26, "trades": 114, "fee": 0, "shared_fee": 0 } ] }
实现方法
1. JavaScript 版本
利用对象分组特性,遍历数据时用日期作为键,不断覆盖为当前日期的最后一条数据,最后提取值即可:
// 假设apiResponse是API返回的完整JSON对象 const filteredData = Object.values( apiResponse.data.reduce((acc, item) => { acc[item.date] = item; return acc; }, {}) ); // 更新原数据的data字段 apiResponse.data = filteredData;
2. Python 版本
通过字典分组,保留每个日期对应的最后一条数据:
import json # 假设json_str是API返回的JSON字符串 api_response = json.loads(json_str) date_groups = {} for item in api_response['data']: # 每次覆盖,最终保留该日期的最后一条数据 date_groups[item['date']] = item # 提取过滤后的数据 filtered_data = list(date_groups.values()) api_response['data'] = filtered_data # 输出处理后的JSON(可选) print(json.dumps(api_response, indent=2))
注意事项
如果API返回的数据是严格按时间顺序排列(每天的24条连续且最后一条为当日第24小时数据),上述方法完全适用。若数据顺序混乱,需先对每个日期的条目按时间排序,再取最后一条。
内容的提问来源于stack exchange,提问作者ren
相关产品推荐
相关产品推荐

