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