【发布时间】:2021-11-08 17:10:09
【问题描述】:
我有一个数据类
from dataclasses import dataclass
@dataclass
class ModelResult:
scorecard_calcs: dict
然后在Model类中使用这个
import pandas as pd
import numpy as np
class Model:
def predict(self, input):
scorecard_calcs = pd.DataFrame([{'val':np.inf}, {'val':-np.inf}]).to_dict()
return ModelResult(scorecard_calcs=scorecard_calcs)
这将在其他地方转换为 json,但 inf 不是有效的 json。
如何更改 ModelResult 数据类,使其自动将所有 inf 值替换为有效 json 的 1.7976931348623157e+308。
【问题讨论】:
-
创建
scorecard_calcs时不要使用inf? -
嗯,这实际上是正确的值,我只是根据 json 约定来更改它,因此我认为在 ModelResult 中更改它会更聪明,然后将其传递出去,但也许这更聪明方式...(这是一个简化版本,计分卡calcs中的值是计算出来的)
-
这是有道理的。您应该调整“其他地方这将被转换为 json”代码。但是,如何完成转换很重要,因为如果您使用
json模块,例如,您可以传递一个处理inf的自定义编码器。 -
我运行代码并通过调用
predict得到ModelResult(scorecard_calcs={'val': {0: inf, 1: -inf}})。这不正是你所期待的吗? -
如果您想在
__init__之后更改任何内容,可以使用__post_init__
标签: python json python-dataclasses