[Python-ideas] dict.merge(d1, d2, ...) (Counter proposal for PEP 584)

Jonathan Goble jcgoble3 at gmail.com
Thu Mar 21 14:17:41 EDT 2019

On Thu, Mar 21, 2019 at 1:54 PM Stefan Behnel <stefan_ml at behnel.de> wrote:

> Steven D'Aprano schrieb am 21.03.19 um 17:21:
> > On Thu, Mar 21, 2019 at 09:11:18AM -0700, Guido van Rossum wrote:
> >
> >> I don't find it easy to understand or remember that d1.update(d2)
> modifies
> >> d1 in place, while d1.merge(d2) first copies d1.
> >>
> >> Maybe the name can indicate the copying stronger? Like we did with
> sorting:
> >> l.sort() sorts in-place, while sorted(l) returns a sorted copy.
> >
> > How about dict.merged(*args, **kw)? Or dict.updated()?
> And then users would accidentally type
>     d.updated(items)
> and lack the tests to detect that this didn't do anything (except wasting
> some time and memory).
> Stefan

Generally when I call a method named with a verb on an instance of
something mutable, I expect it to do something on that instance and return
None. So merged() or updated() feels more like a built-in or a function to
import from somewhere, akin to sorted().

Perhaps dict.union(d2) could be considered? Three points in favor: 1) Not a
verb, therefore makes it clearer that it returns something new. 2) Not
confusable with existing dict methods. 3) It matches the name and behavior
of set.union (modulo value conflicts), so will be easier to grok.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190321/83f301be/attachment.html>

More information about the Python-ideas mailing list