首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pickle不能pickle命名的元组

Pickle不能pickle命名的元组
EN

Stack Overflow用户
提问于 2019-02-23 09:02:38
回答 1查看 895关注 0票数 1

我尝试这样处理namedtuple

代码语言:javascript
复制
def f():
    TemplateData = namedtuple('TemplateData', ['field1', 'field2'])
    f1 = np.random.randn(50,50)
    f2 = np.random.randn(50,50)
    td = TemplateData(f1, f2)
    return td

data = f()
with open("aaaa.pkl", "wb") as fl:
    pkl.dump(data, fl)

但这是由于错误而崩溃:

代码语言:javascript
复制
PicklingError: Can't pickle <class '__main__.TemplateData'>: it's not the same object as __main__.TemplateData

怎么了?如果pickle不是存储命名元组的最佳方式-那么最有效的方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-23 09:11:13

您需要在函数外部定义命名元组,并将命名元组的名称更改为TemplateData

代码语言:javascript
复制
TemplateData = namedtuple('TemplateData', ['field1', 'field2'])
f1 = np.random.randn(50,50)
f2 = np.random.randn(50,50)
model_cluster = TemplateData(f1, f2)

with open("aaaa.pkl", "wb") as fl:
    pkl.dump(model_clusters_dict, fl)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54837176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档