[issue36144] Dictionary union. (PEP 584)
Guido van Rossum
report at bugs.python.org
Thu Feb 27 00:59:41 EST 2020
Guido van Rossum <guido at python.org> added the comment:
I think for `|=` the only choice is for it to be essentially an alias to `.update()`. So that means `cm |= other` becomes `cm.maps[0].update(other)`.
For `|` we are breaking new ground and we could indeed make `cm | other` do something like `ChainMap(other, *cm.maps)`.
I've not used ChainMap much (though I've seen some code that uses it) so I'm probably not the best judge of whether this is a good feature to have.
Note that `other | cm` will just do whatever `other.__or__` does, since ChainMap isn't a true subclass of dict, so it will not fall back to `cm.__ror__`. Basically ChainMap will not get control in this case.
Other thoughts:
- Maybe `cm1 | cm2` (both ChainMaps) ought to return `ChainMap(*cm2.maps, *cm1.maps)`?
- These semantics make `|=` behave rather differently from `|`. Is that okay? If not, which of them should change, and how?
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36144>
_______________________________________
More information about the Python-bugs-list
mailing list