Setting default_factory of defaultdict to key

Dave Angel davea at davea.name
Sun Dec 7 11:31:07 EST 2014


On 12/05/2014 03:51 PM, John J Posner wrote:
> At the beginning of this thread, Ian Kelly said:

Since this clearly is intended to be part of the earlier thread, please 
make it so by using reply-list or whatever equivalent your email program 
has.

>
>      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.
>
>


-- 
DaveA



More information about the Python-list mailing list