frozendict
Ian Kelly
ian.g.kelly at gmail.com
Wed Feb 8 21:13:10 EST 2012
On Wed, Feb 8, 2012 at 6:23 PM, Evan Driscoll <edriscoll at wisc.edu> wrote:
> Hi all,
>
> I've been trying for a few days (only a little bit at a time) to come up
> with a way of implementing a frozendict that doesn't suck. I'm gradually
> converging to a solution, but I can't help but think that there's some
> subtlety that I'm probably missing which is why it's not already provided.
>
> Does anyone know why Python doesn't already come with a frozendict, or
> why there seem to only be a couple attempts to write one?
Define "doesn't suck". If I were to hack one up, it would look
something like this:
from collections import Mapping, Hashable
class frozendict(Mapping, Hashable):
def __init__(self, *args, **kwargs):
self.__dict = dict(*args, **kwargs)
def __len__(self):
return len(self.__dict)
def __iter__(self):
return iter(self.__dict)
def __getitem__(self, key):
return self.__dict[key]
def __hash__(self):
return hash(frozenset(self.__dict.iteritems()))
def __repr__(self):
return 'frozendict(%r)' % (self.__dict,)
Not extensively tested, but it seems to work pretty well for me.
Cheers,
Ian
More information about the Python-list
mailing list