機能のピクルスファイル(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では、pickling関数は 'def'ステートメントを使って定義されていれば機能しますが、' lambda'で定義されている場合は機能しません( 'lambda'が変数に割り当てられていても)。 'def dtree()を試してください:return defaultdict(dtree)'おそらく? – Blckknght
@Blckknght Python 2を使用しています。 – Merlin