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