Create child class of Python dict with modified values

dmitrey dmitrey.kroshko at scipy.org
Mon Aug 9 06:44:36 EDT 2010


On Aug 9, 1:38 pm, Peter Otten <__pete... at web.de> wrote:
> dmitrey wrote:
> > hi all,
> > suppose I have defined a child class of Python dict, currently it
> > constructor looks like that:
> >     def __init__(self, *args, **kwargs):
> >         dict.__init__(self, *args, **kwargs)
> >         #(+some more insufficient code)
>
> > Constructor should be capable of calling with either any way Python
> > dict is constructed or with a Python dict instance to be derived from;
> > calculations speed is important.
>
> > So it works well for now, but I want __init__ to set modified values,
> > like this:
> > values_of_the_dict = [some_func(elem) for elem in self.values()]
>
> > How this could be done?
> >>> class D(dict):
>
> ...     def __init__(self, *args, **kw):
> ...             if args:
> ...                     args = ((k, v.upper()) for k, v in args[0]),
> ...             if kw:
> ...                     for k in kw: kw[k] = 10*kw[k]
> ...             dict.__init__(self, *args, **kw)
> ...>>> D(["ab", "cd"], e="f")
>
> {'a': 'B', 'c': 'D', 'e': 'ffffffffff'}
>
> Replace v.upper() and 10*kw[k] with the appropriate some_func() calls.

OK, thank you.

> Personally I would apply the function before passing the data to the dict
> subclass.

It's impossible for the situation in hand.

D.



More information about the Python-list mailing list