我在看彼得·诺维格的code关于如何编写简单的拼写检查程序。一开始,他用这段代码把单词插入词典。
def train(features):
model = collections.defaultdict(lambda: 1)
for f in features:
model[f] += 1
return model
Python dict和这里使用的Python dict有什么区别?另外,lambda
的作用是什么?我查看了API文档here,它说defaultdict实际上是从dict派生的,但是如何决定使用哪一个呢?
Tags:
不同之处在于,如果尚未设置键,
defaultdict
将“默认”一个值。如果不使用defaultdict
,则必须检查该键是否存在,如果不存在,则将其设置为所需的值。lambda正在为默认值定义工厂。该函数在需要默认值时被调用。你可以假设有一个更复杂的默认函数。
(来自
help(type(collections.defaultdict()))
){}.setdefault
在本质上是相似的,但是接受一个值而不是一个工厂函数。它用于设置值,如果它不存在。。。不过,这有点不同。如果对于丢失的键有一些有意义的默认值,并且不想显式地处理它们,请使用defaultdict。
defaultdict构造函数将函数作为参数并使用该函数构造值。
与执行此操作的无参数函数f相同
我忘记了API是这样设计的,而不是将值作为参数。如果我设计了defaultdict接口,它会稍微复杂一些,丢失的值创建函数会将丢失的键作为参数。
相关问题 更多 >
编程相关推荐