(original) (raw)
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\].
>>> {'x': 1, 'y': 2} + {'z': 3}
{'x': 1, 'y': 2, 'z': 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)
>>> {'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.
\[2\] https://mail.python.org/pipermail/python-dev/2015-February/138116.html
\~ Ian Lee
\[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