No he doesn't. defaultdict provides a default value for ALL missing values. His approach allows him to target one key in particular, and is a very common python idiom.
>>> x.getDefault(1, 'Que?')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
x.getDefault(1, 'Que?')
AttributeError: 'dict' object has no attribute 'getDefault' >>> a = {1:'foo',2:'blah'}
>>> a.setdefault(1,'default')
'foo'
>>> a.setdefault(4,'default')
'default'
>>> a
{1: 'foo', 2: 'blah', 4: 'default'}
This actually updates the underlying datastructure. Very handy when you want to deal with nested structures, since you can do something like: matches.setdefault(keyword,[]).append(s)
This will append s to the list in matches[keyword] if it exists, or set matches[keyword] to [] and then append. {'a':1}.get('b',5)