如何在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")
代码说明
- 浮点数处理:遍历原字典,对浮点数执行四舍五入保留两位小数,非浮点数直接保留原值,确保输出格式符合要求。
- 构建顶层结构:创建新字典
final_data,将sampleid和处理后的metrics作为顶层键,原字典内容完全归入metrics下。 - 写入文件:直接将新构建的字典写入目标文件,避免修改原字典导致的结构混乱。
测试示例
调用函数时传入原字典、输出路径和样本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
相关产品推荐
相关产品推荐

