Add two dicts
Greg Brunet
gregbrunet at NOSPAMsempersoft.com
Sat Aug 30 02:17:14 EDT 2003
"Alex Martelli" <aleax at aleax.it> wrote in message
news:BjE3b.7850$aG6.251286 at news1.tin.it...
> Afanasiy wrote:
>
> > On Thu, 28 Aug 2003 22:07:06 -0700, Erik Max Francis
<max at alcyone.com>
> > wrote:
> >
> >>Afanasiy wrote:
> >>
> >>> Can I add two dicts in a way which is not cumbersome to the above
%
> >>> string
> >>> operation? Is this another case of writing my own function, or
does a
> >>> builtin (or similar) already exist for this?
> >>
> >>combinedDict = aDict.copy()
> >>combinedDict.update(anotherDict)
> >>
> >>If that's cumbersome, don't really know what you'd consider
> >>non-cumbersome.
> >
> > Don't really know if you're asking, but :
> >
> > vars(self)+{'x':'123','y':'345'}
> >
> > I would consider that non-cumbersome. ;-)
>
> So, what about:
>
> def dict_add(adict, another):
> result = adict.copy()
> result.update(another)
> return result
>
> and then dict_add(vars(self), {'x':'123','y':'345'}) ? But in fact
> you can do even better...:
>
... lots of other good ideas...
But what about something like this:
>>> class xdict(dict):
... def __add__(self,dict2):
... result = self.copy()
... result = result.update(dict2)
...
I was hoping that would allow:
>>> a=xdict({'y': 456, 'x': 111})
>>> b=xdict({'y': 444, 'z': 789})
>>> a+b
but instead of the result which I hoped for, I get the following:
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'xdict' and 'xdict'
So I can't implement '+' operator for dictionaries - why not?
--
Greg
More information about the Python-list
mailing list