Setting default_factory of defaultdict to key

Ethan Furman ethan at stoneleaf.us
Mon Dec 1 13:19:24 EST 2014


On 12/01/2014 10:05 AM, Larry Martell wrote:
>
> Is there a way to set the default_factory of defaultdict so that
> accesses to undefined keys get to set to the key?

You need to subclass and modify __missing__ to actually pass along the key:

--> class defaultdictkey(defaultdict):
...   def __missing__(self, key):
...     self[key] = self.default_factory(key)
...     return self[key]
...

and in action:

--> huh = defaultdictkey(lambda k: k)
--> huh
defaultdict(<function <lambda> at 0x7fe1305de3f0>, {})
--> huh['x']
'x'
--> huh['x']
'x'
--> huh.get('y')
--> huh['y']
'y'
--> huh.get('y')
'y'

--
~Ethan~

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20141201/6d8f7a36/attachment.sig>


More information about the Python-list mailing list