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

Terry Reedy tjreedy at udel.edu
Fri Mar 22 03:42:38 EDT 2019

On 3/22/2019 12:53 AM, Steven D'Aprano wrote:
> On Thu, Mar 21, 2019 at 09:36:20PM -0400, Terry Reedy wrote:
>> I counted what I believe to be 10 instances of copy-update in the top
>> level of /lib.  Do either of you consider this to be enough that any
>> addition would be worthwhile.
> I think you're referring to Guido and Antoine? 

Yes, those were the two (core-devs) I quoted, and perhaps had missed my 
post, while you already thanked me for collecting some date.

> But for what it's worth,
> I think that's a good indication that there are uses for a merge
> operator.

Some, yes.  Enough for new syntax?  What is a reasonable standard?  Are 
there existing syntax features so sparsely used?  What is the bar for 
something that adds no new function, but saves 6 chars and is easier to 
understand for at least some?

In the past, 'Would this be used in the stdlib?' has been asked of 
feature proposals.  But I never paid attention past == 0 or > 0.  When 
Guido approved ':=', what threashhold of usefulness did he use?  How 
many uses of ':=' does he anticipate, or consider enough to justify the 

>> There are 3 in idlelib that I plan to replace with {**a, **b} and be
>> done with the issue.  I did not check any other packages.
> If a+b already worked for dicts, would you still prefer {**a, **b}?

Example: {**sys.modules, **globals()}

Aside from the fact that I can patch *and* backport to 3.7 *now*, I 
think so.  The latter clearly (to me) maps mappings to a dict.

> How about if it were spelled a|b?

As in sys.modules | globals() or (sys.modules | globals())?  Closer.

Terry Jan Reedy

More information about the Python-ideas mailing list