gpt4 book ai didi

python - Pickle 使用 defaultdict 的字典

转载 作者:行者123 更新时间:2023-12-01 05:33:15 24 4
gpt4 key购买 nike

我的字典定义如下:

def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model

后来,我想使用 pickle 并将字典转储到文本文件中:

f = open('dict.txt', 'wb')
pickle.dump(Nwords, f)

但是代码不起作用并且我收到错误。显然 pickle 无法与 lambda 一起使用,我最好使用模块级函数定义 model 。我已经阅读了答案here

不幸的是,由于我没有使用 Python 的经验,所以我不太确定如何做到这一点。我尝试过:

def dd():
return defaultdict(int)

def train(features):
## model = defaultdict(lambda: 1)
model = defaultdict(dd)
for f in features:
model[f] += 1
return model

我收到错误:

TypeError: unsupported operand type(s) for +=: 'collections.defaultdict' and 'int'

除此之外,return defaultdict(int) 总是会为第一次出现的键分配一个零,而我希望它分配 1。关于如何解决这个问题有什么想法吗?

最佳答案

不幸的是,这个答案对于这个问题来说是正确的,但对于你的问题来说却是错误的。虽然用顶级函数代替 lambda 很棒,而且确实会让 pickle 更快乐,但该函数应该返回要使用的默认值,对于您的情况来说,该值不是另一个 defaultdict 对象。

只需返回与 lambda 返回的值相同的值即可:

def dd():
return 1

每次您尝试访问 defaultdict 实例中尚不存在的键时,dd 都会被调用。然后,另一篇文章返回另一个 defaultdict 实例,该实例设置为使用 int 作为默认值,它与另一个问题中显示的 lambda 匹配。

关于python - Pickle 使用 defaultdict 的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com