[Python-ideas] Adding "+" and "+=" operators to dict

Brett Cannon brett at python.org
Fri Feb 13 18:38:02 CET 2015


On Wed Feb 11 2015 at 2:21:59 AM Ian Lee <ianlee1521 at gmail.com> wrote:

> I mentioned this on the python-dev list [1] originally as a +1 to someone
> else suggesting the idea [2]. It also came up in a response to my post that
> I can't seem to find in the archives, so I've quoted it below [3].
>
> As the subject says, the idea would be to add a "+" and "+=" operator to
> dict that would provide the following behavior:
>
> >>> {'x': 1, 'y': 2} + {'z': 3}
> {'x': 1, 'y': 2, 'z': 3}
>
> With the only potentially non obvious case I can see then is when there
> are duplicate keys, in which case the syntax could just be defined that
> last setter wins, e.g.:
>
> >>> {'x': 1, 'y': 2} + {'x': 3}
> {'x': 3, 'y': 2}
>
> Which is analogous to the example:
>
> >>> new_dict = dict1.copy()
> >>> new_dict.update(dict2)
>
> With "+=" then essentially ending up being an alias for
> ``dict.update(...)``.
>
> I'd be happy to champion this as a PEP if the feedback / public opinion
> heads in that direction.
>

Unless Guido wants to speak up and give some historical context, I think a
PEP that finally settled this idea would be good, even if it just ends up
being a historical document as to why dicts don't have an __add__ method.
Obviously there is a good amount of support both for and against the idea.

-Brett


>
>
> [1] https://mail.python.org/pipermail/python-dev/2015-February/138150.html
> [2] https://mail.python.org/pipermail/python-dev/2015-February/138116.html
> [3] John Wong --
>
>> Well looking at just list
>> a + b yields new list
>> a += b yields modified a
>> then there is also .extend in list. etc.
>> so do we want to follow list's footstep? I like + because + is more
>> natural to read. Maybe this needs to be a separate thread. I am actually
>> amazed to remember dict + dict is not possible... there must be a reason
>> (performance??) for this...
>
>
> Cheers,
>
> ~ Ian Lee
>  _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150213/d1a409db/attachment-0001.html>


More information about the Python-ideas mailing list