How do I create pickle file of function (defaultDict
)? The error I get is
can't 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()
StackTrace:
TypeError Traceback (most recent call last)
<ipython-input-287-376cac3b4f0d> in <module>()
1 f = open("hapP.pkl","wb")
----> 2 pickle.dump(hapPkl,f)
3 f.close()
/usr/lib64/python2.7/copy_reg.pyc in _reduce_ex(self, proto)
68 else:
69 if base is self.__class__:
---> 70 raise TypeError, "can't pickle %s objects" % base.__name__
71 state = base(self)
72 args = (self.__class__, base, state)
TypeError: can't pickle function objects
A simple workaround would be to implement your tree data-structure differently, without defaultdict
:
class DTree(dict):
def __missing__(self, key):
value = self[key] = type(self)()
return value
try: import cPickle as pickle
except: import pickle
#Create dtree object:
hapPkl = DTree()
#Create Pickle file
with open("hapP.pkl", "wb") as f:
pickle.dump(hapPkl, f)