The problem with sprinkling operator overloading all over the place in non numerical use is that you as tje reader don't get the context hints provided by method names. I think this change is bad in the overall balance.
{**d1, **d2}
This provides a clearer symbolic notation for dictionaries analogous to what's already available with sets. FWIW the pep discusses what this would look like as a method vs an operator:> There should be one-- and preferably only one --obvious way to do it.
The operator is better than the dict unpacking-repacking trick, and will become the obvious way to do it.
and dict keys are basically a set
Hence "|" as set union is intuitive for people who are familiar with this application of bit vectors.
[1] https://en.wikipedia.org/wiki/Algebra_of_sets
[2] https://www.britannica.com/science/set-theory/Operations-on-...
You may be interested to read PEP 584's list of examples of all the real-world code the existence of this operator makes clearer: