Setting default_factory of defaultdict to key
John J Posner
johnjposner at verizon.net
Fri Dec 5 15:51:55 EST 2014
At the beginning of this thread, Ian Kelly said:
Not with defaultdict, but you can subclass dict and provide a
__missing__ method directly
To emphasize, you don't need to subclass "defaultdict" -- you need only subclass "dict" itself:
class MyDict(dict):
def __missing__(self, key):
self[key] = key
return key
md = MyDict()
md[1] = 111
_ = md[2]
_ = md["another key"]
## md now looks like this: {1: 111, 2: 2, 'another key': 'another key'}
The defaultdict documentation is confusing on this point. A *long* time ago, I filed Bug 9536 to improve the doc, but the fix hasn't bubbled to the surface yet.
More information about the Python-list
mailing list