Как создать файл рассола функции (defaultDict
)? Ошибки я получаю не может pickle function objects
Как распиливать defaultdict, который использует лямбда-функцию?
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
Где 'tree' приходящий из? Вы определяете только 'dtree'. – user2357112
В Python 3 функции травления работают, если они определены с помощью инструкции 'def', но не если они определены с помощью lambda (даже если для lambda присваивается переменная). Попробуйте 'def dtree(): return defaultdict (dtree)' возможно? – Blckknght
@Blckknght с использованием Python 2. – Merlin