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

如何在Python中为字典添加'metrics'键并导出指定JSON格式

问题解决:将字典字段归入指定键并导出目标JSON格式

需求概述

需要把输入字典的所有字段归入metrics键下,同时添加sampleid层级结构,并且将浮点数保留两位小数,最终导出符合要求的JSON文件。

当前问题:已成功添加sampleid,但原有字段仍处于JSON根层级,未被归入metrics键内。

解决方案

不要直接修改原字典,而是构建一个新的顶层字典,将sampleid和处理后的metrics作为顶层键。同时处理浮点数的精度问题:

修改后的代码

import json

def save_output(d, outfile, sample_id):
    # 处理浮点数,保留两位小数
    processed_metrics = {}
    for key, value in d.items():
        if isinstance(value, float):
            processed_metrics[key] = round(value, 2)
        else:
            processed_metrics[key] = value
    
    # 构建最终的输出结构
    final_data = {
        "sampleid": {"id": sample_id},
        "metrics": processed_metrics
    }
    
    with open(outfile, "w") as f:
        json.dump(final_data, f, sort_keys=True, indent=4)
        f.write("\n")

代码说明

  1. 浮点数处理:遍历原字典,对浮点数执行四舍五入保留两位小数,非浮点数直接保留原值,确保输出格式符合要求。
  2. 构建顶层结构:创建新字典final_data,将sampleid和处理后的metrics作为顶层键,原字典内容完全归入metrics下。
  3. 写入文件:直接将新构建的字典写入目标文件,避免修改原字典导致的结构混乱。

测试示例

调用函数时传入原字典、输出路径和样本ID:

# 输入字典
d = {
    "coverage": 2.22,
    "mean_coverage": 28.78333,
    "insert_size": 445.76355,
    "pct": 98.13486,
    "sample": "wgs"
}

# 调用函数
save_output(d, "result.json", "SA001")

输出结果

生成的result.json内容如下:

{
    "metrics": {
        "coverage": 2.22,
        "insert_size": 445.76,
        "mean_coverage": 28.78,
        "pct": 98.13,
        "sample": "wgs"
    },
    "sampleid": {
        "id": "SA001"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:33:17