相关疑难解决方法(0)

将Python namedtuple序列化为json

namedtuple保留字段名称的情况下序列化到json 的推荐方法是什么?

将a namedtuple序列化为json只会导致序列化的值和字段名称在翻译中丢失.我想在json化时保留字段,因此做了以下事情:

class foobar(namedtuple('f', 'foo, bar')):
    __slots__ = ()
    def __iter__(self):
        yield self._asdict()
Run Code Online (Sandbox Code Playgroud)

上面按照我的预期序列化到json,并且namedtuple在我使用的其他地方行为(属性访问等),除了在迭代它时使用非元组结果(这对我的用例来说很好).

在保留字段名称的情况下转换为json的"正确方法"是什么?

python json namedtuple

69
推荐指数
6
解决办法
3万
查看次数

namedtuple 需要 3 个参数?

尝试在 Python3 Jupyter notebook 中运行此代码:

t = namedtuple('a', 'b')
a = [1,0,1]
b = [1,1,1]
Out, In = np.asanyarray(a), np.asanyarray(b)
t(Out.shape[0], *In.shape)
Run Code Online (Sandbox Code Playgroud)

返回错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-151-7955ff03a60d> in <module>()
      3 b = [1,1,1]
      4 Out, In = np.asanyarray(a), np.asanyarray(b)
----> 5 t(Out.shape[0], *In.shape)

TypeError: __new__() takes 2 positional arguments but 3 were given
Run Code Online (Sandbox Code Playgroud)

可以用两个参数创建namedtuple吗?

更新 :

为什么这不会导致类似的问题:

t = namedtuple('ps', 'Out In S')

a = np.asanyarray([[1]])
b  = np.asanyarray([[1]])

d = t(a.shape[0], *b.shape)

d
Run Code Online (Sandbox Code Playgroud)

计算:

ps(Out=1, …
Run Code Online (Sandbox Code Playgroud)

python namedtuple python-3.x

1
推荐指数
1
解决办法
2589
查看次数

标签 统计

namedtuple ×2

python ×2

json ×1

python-3.x ×1