如何阻止python json.dump将整数0转换为字符串?

时间:2018-03-22 14:37:32

标签: python json python-3.x

在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
}

1 个答案:

答案 0 :(得分:0)

正如Jean-François所述,答案是将easydict更新为最新版本。遗憾的是,我不确定为什么0的处理方式与其他整数不同,但这似乎解决了我的问题