如何创建函数的pickle文件(defaultDict
)?我得到的错误是
不能pickle function objects
from collections import defaultdict
dtree = lambda: defaultdict(tree)
try: import cPickle as pickle
except: import pickle
#Create defaultdict object:
hapPkl = dtree()
#Create Pickle file
f = open("hapP.pkl","wb")
pickle.dump(hapPkl,f)
f.close()
堆栈跟踪:
^{pr2}$
cPickle
错误消息有点误导;pickle
版本更好。并不是说您不能pickle函数;而是它们需要通过它们的__name__
可用。lambda已将__name__
设置为'<lambda>'
,因此它不可拾取。用def
定义它:而且是可以挑选的。(当您取消拾取时,仍然需要一个匹配的
tree
定义。)一个简单的解决方法是以不同的方式实现树数据结构,而不使用
defaultdict
:相关问题 更多 >
编程相关推荐