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

Python处理多JSON输入 计算子字段平均与求和并输出表格

实现思路

  • 分别加载metric1.json和metric2.json文件,优先校验两个文件的服务列表一致性,避免后续计算出现错配
  • 处理metric1.json的服务数据:遍历每个服务的pointlist,跳过点位第一个纪元时间戳字段,对剩余数值计算平均值
  • 处理metric2.json的服务数据:遍历每个服务的pointlist,跳过点位第一个纪元时间戳字段,对剩余数值求和
  • 最终整合结果,直接输出标准Markdown格式表格

示例实现代码(Python)

import json

def calc_service_metrics(metric1_path: str, metric2_path: str) -> list:
    # 加载两份输入数据
    with open(metric1_path, "r", encoding="utf-8") as f:
        metric1 = json.load(f)
    with open(metric2_path, "r", encoding="utf-8") as f:
        metric2 = json.load(f)
    
    res = []
    # 按服务一一对应计算指标,默认两份数据服务顺序完全匹配
    for m1_svc, m2_svc in zip(metric1["services"], metric2["services"]):
        # 可选校验服务名称一致性,避免输入数据异常导致计算错误
        assert m1_svc["service_name"] == m2_svc["service_name"], "两份输入的服务列表不匹配"
        svc_name = m1_svc["service_name"]

        # 计算metric1平均值
        val_total = 0
        val_cnt = 0
        for point in m1_svc["pointlist"]:
            for v in point[1:]:
                val_total += v
                val_cnt += 1
        avg_m1 = val_total / val_cnt if val_cnt else 0

        # 计算metric2总和
        sum_m2 = 0
        for point in m2_svc["pointlist"]:
            sum_m2 += sum(point[1:])
        
        res.append({
            "服务名称": svc_name,
            "metric1平均值": round(avg_m1, 2),
            "metric2总和": round(sum_m2, 2)
        })
    return res

if __name__ == "__main__":
    final_data = calc_service_metrics("metric1.json", "metric2.json")
    # 输出Markdown表格
    print("| 服务名称 | metric1平均值 | metric2总和 |")
    print("| --- | --- | --- |")
    for item in final_data:
        print(f"| {item['服务名称']} | {item['metric1平均值']} | {item['metric2总和']} |")

补充说明

  • 兼容单点位除时间戳外有多个数值的场景,单点位仅含时间戳+1个数值的通用场景也可正常运行
  • 输出默认保留2位小数,可根据业务需求修改round函数的参数调整精度
  • 若需要输出JSON、CSV等其他格式,直接修改最终输出部分的逻辑即可

内容的提问来源于stack exchange,提问作者R Wagner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:15:04