Mer*_*lin 0 python lambda pickle defaultdict
如何创建函数 ( 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()
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
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()
Run Code Online (Sandbox Code Playgroud)
该cPickle错误消息是有点误导; 该pickle版本更好。并不是你不能pickle函数;这是他们需要由他们的__name__. lambda 已__name__设置为'<lambda>',因此它不可pickle。定义它def:
def tree():
return defaultdict(tree)
Run Code Online (Sandbox Code Playgroud)
它是可腌制的。(tree当你解开它时,你仍然需要一个可用的匹配定义。)
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |