I'm reading http://norvig.com/spell-correct.html
and do not understand the expression listed in the subject which is part of this function: def train(features): model = collections.defaultdict(lambda: 1) for f in features: model[f] += 1 return model Per http://docs.python.org/lib/defaultdict-examples.html It seems that there is a default factory which initializes each key to 1. So by the end of train(), each member of the dictionary model will have value >= 1 But why wouldnt he set the value to zero and then increment it each time a "feature" (actually a word) is encountered? It seems that each model value would be 1 more than it should be. -- http://mail.python.org/mailman/listinfo/python-list