On Mon, Mar 4, 2019, 11:45 AM Steven D'Aprano <steve@pearwood.info> wrote:
> Like other folks in the thread, I also want to merge dicts three times per
> year.

I'm impressed that you have counted it with that level of accuracy. Is it on the same three days each year, or do they move about? *wink*

To be respectful, I always merge dicts on Eid al-Fitr, Diwali, and Lent. I was speaking approximate since those do not appears line up with the same Gregorian year.

> And every one of those times, itertools.ChainMap is the right way to do that non-destructively, and without copying.

Can you elaborate on why ChainMap is the right way to merge multiple dicts into a single, new dict?

Zero-copy.


ChainMap also seems to implement the opposite behaviour to that usually desired: first value seen wins, instead of last:

True, the semantics are different, but equivalent, to the proposed dict addition. I put the key I want to "win" first rather than last.

If you know ahead of time which order you want, you can simply reverse it:

This seems nonsensical. If I write, at some future time, 'dict1+dict2+dict3' I need exactly as much to know "ahead of time" which keys I intend to win.