在python中,我有一个EasyDict对象,它包含一个类似于下面所示的配置参数列表。当我调用json.dump时,它会按预期写出所有内容,除非它将显示的最终条目GPU_ID转换为字符串文字“0”而不是我期望的int 0。在读取我输出的配置json文件之前,我必须从0周围删除引号,然后一切都按预期工作。我宁愿不必每次都手动调整。我查看了文档,但还没有找到有用的东西。有办法解决这个问题吗?
from easydict import EasyDict as ed
myConfig = ed()
myConfig.MOMENTUM = 0.9
myConfig.WEIGHT_DECAY = 0.0001
myConfig.BATCH_SIZE=256
myConfig.GPU_ID = 0
致电:
with open(os.path.join(folder_to_dump, file_path), "w") as f:
json.dump(myConfig, f, indent=4)
输出如下:
{
"MOMENTUM" : 0.9,
"WEIGHT_DECAY" : 0.0001,
"BATCH_SIZE" : 256,
"GPU_ID" : "0"
}
然而,我想要的是:
{
"MOMENTUM" : 0.9,
"WEIGHT_DECAY" : 0.0001,
"BATCH_SIZE" : 256,
"GPU_ID" : 0
}
答案 0 :(得分:0)
正如Jean-François所述,答案是将easydict更新为最新版本。遗憾的是,我不确定为什么0的处理方式与其他整数不同,但这似乎解决了我的问题