如何挑选使用lambda函数的defaultdict?

时间:2016-06-20 18:32:01

标签: python lambda pickle defaultdict

如何创建功能的pickle文件(reg)?我得到的错误是 不能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()

2 个答案:

答案 0 :(得分:4)

cPickle错误消息有点误导; pickle版本更好。并不是说你不能腌制功能;它们需要__name__提供。 lambda将__name__设置为'<lambda>',因此它不可选。使用def

进行定义
def tree():
    return defaultdict(tree)

它将是可挑选的。 (当你取消它时,你仍然需要tree的匹配定义。)

答案 1 :(得分:1)

一个简单的解决方法是以不同的方式实现树数据结构,而不使用build_exe_options = { "include_msvcr": True, "includes": [ 'Icon.ico' , 'PlayTube.ipa' , 'libmobiledevice/' ], }

defaultdict