I agree with Storchaka here. The advantage of existing dict merge syntax is that it will cause an error if the object is not a dict or dict-like object, thus preventing people from doing bad things.
> On Feb 28, 2019, at 2:16 AM, Serhiy Storchaka <storch...@gmail.com> wrote: > > 27.02.19 20:48, Guido van Rossum пише: >> On Wed, Feb 27, 2019 at 10:42 AM Michael Selik <m...@selik.org >> <mailto:m...@selik.org>> wrote > The dict subclass collections.Counter >> overrides the update method >> for adding values instead of overwriting values. >> >> https://docs.python.org/3/library/collections.html#collections.Counter.update >> Counter also uses +/__add__ for a similar behavior. >> >>> c = Counter(a=3, b=1) >> >>> d = Counter(a=1, b=2) >> >>> c + d # add two counters together: c[x] + d[x] >> Counter({'a': 4, 'b': 3}) >> At first I worried that changing base dict would cause confusion for >> the subclass, but Counter seems to share the idea that update and + >> are synonyms. >> Great, this sounds like a good argument for + over |. The other argument is >> that | for sets *is* symmetrical, while + is used for other collections >> where it's not symmetrical. So it sounds like + is a winner here. > > Counter uses + for a *different* behavior! > > >>> Counter(a=2) + Counter(a=3) > Counter({'a': 5}) > > I do not understand why we discuss a new syntax for dict merging if we > already have a syntax for dict merging: {**d1, **d2} (which works with *all* > mappings). Is not this contradicts the Zen? > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/