我正在查看 Peter Norvig 关于如何编写简单拼写检查器的 代码。一开始,他使用这段代码将单词插入字典。
def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model
Python 字典和这里使用的字典有什么区别?另外, lambda
是干什么用的?我在 这里 查看了 API 文档,它说 defaultdict 实际上是从 dict 派生的,但是如何决定使用哪一个呢?
原文由 Legend 发布,翻译遵循 CC BY-SA 4.0 许可协议
不同之处在于
defaultdict
如果尚未设置该键,则将“默认”一个值。如果您没有使用defaultdict
您必须检查该密钥是否存在,如果不存在,请将其设置为您想要的。lambda 为默认值定义了一个工厂。只要需要默认值,就会调用该函数。您可以假设有一个更复杂的默认函数。
(来自
help(type(collections.defaultdict()))
){}.setdefault
本质上是相似的,但采用一个值而不是工厂函数。如果该值尚不存在,它用于设置该值……不过,这有点不同。