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~

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to