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

如何用Django(Python 2)从JSON中获取对应时间与数值

实现时间与数值的一一对应方案

这问题我之前做数据可视化处理时经常碰到,核心思路就是利用数组索引对齐——既然你的时间戳和数值是按顺序一一对应的,只要遍历其中一个数组,用相同索引去取另一个数组的元素就行。下面给你两种常用语言的具体实现:

假设你的JSON结构示例

先模拟一个符合你描述的JSON结构(如果实际结构有差异,调整路径即可):

{
  "timestamps": [1515831588000, 1515838788000, 1515845987000],
  "values": {
    "data": [1, 2, 3],
    "type": "metric_value"
  }
}

JavaScript 实现

// 假设已解析得到JSON对象
const jsonData = {
  timestamps: [1515831588000, 1515838788000, 1515845987000],
  values: {
    data: [1, 2, 3],
    type: "metric_value"
  }
};

// 先校验数组长度一致性,避免索引越界
if (jsonData.timestamps.length !== jsonData.values.data.length) {
  throw new Error("时间戳数组与数值数组长度不匹配,无法一一对应");
}

// 生成对应关系数组
const pairedData = jsonData.values.data.map((value, index) => ({
  timestamp: jsonData.timestamps[index],
  value: value,
  valueType: jsonData.values.type
}));

console.log(pairedData);
// 输出结果:
// [
//   { timestamp: 1515831588000, value: 1, valueType: 'metric_value' },
//   { timestamp: 1515838788000, value: 2, valueType: 'metric_value' },
//   { timestamp: 1515845987000, value: 3, valueType: 'metric_value' }
// ]

Python 实现

# 解析后的JSON数据
json_data = {
    "timestamps": [1515831588000, 1515838788000, 1515845987000],
    "values": {
        "data": [1, 2, 3],
        "type": "metric_value"
    }
}

# 校验数组长度
if len(json_data["timestamps"]) != len(json_data["values"]["data"]):
    raise ValueError("时间戳数组与数值数组长度不一致,无法完成对应匹配")

# 方式1:循环遍历生成
paired_data = []
for idx, val in enumerate(json_data["values"]["data"]):
    paired_data.append({
        "timestamp": json_data["timestamps"][idx],
        "value": val,
        "value_type": json_data["values"]["type"]
    })

# 方式2:更简洁的列表推导式
# paired_data = [
#     {
#         "timestamp": json_data["timestamps"][idx],
#         "value": val,
#         "value_type": json_data["values"]["type"]
#     } for idx, val in enumerate(json_data["values"]["data"])
# ]

print(paired_data)
# 输出结果:
# [
#   {'timestamp': 1515831588000, 'value': 1, 'value_type': 'metric_value'},
#   {'timestamp': 1515838788000, 'value': 2, 'value_type': 'metric_value'},
#   {'timestamp': 1515845987000, 'value': 3, 'value_type': 'metric_value'}
# ]

关键注意事项

  • 数组长度校验:一定要先检查时间戳数组和数值数组的长度是否相等,避免出现索引越界或者部分数据匹配错误的问题。
  • 路径调整:如果你的实际JSON结构中,时间戳或数值所在的层级和示例不同,只需要修改代码中对应的属性路径即可,核心的索引对齐逻辑不变。

内容的提问来源于stack exchange,提问作者Abhimanyu Saharan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:42:13