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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:24