On 12/01/2014 10:29 AM, Larry Martell wrote: > On Mon, Dec 1, 2014 at 1:19 PM, Ethan Furman <et...@stoneleaf.us> wrote: >> 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' > > > I spoke too soon: > >>>> class defaultdictkey(defaultdict): > ... def __missing__(self, key): > ... self[key] = self.default_factory(key)
You missed the third line here ^ ... return self[key] -- ~Ethan~
signature.asc
Description: OpenPGP digital signature
-- https://mail.python.org/mailman/listinfo/python-list