Create child class of Python dict with modified values
Peter Otten
__peter__ at web.de
Mon Aug 9 06:38:52 EDT 2010
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.
Personally I would apply the function before passing the data to the dict
subclass.
Peter
More information about the Python-list
mailing list