
On Tue, Feb 17, 2015 at 10:08 PM, Stephen J. Turnbull <stephen@xemacs.org> wrote:
C Anthony Risinger writes:
I'm not versed enough in the math behind it to know if it's expected or not, but as it stands, to remain compatible with sets, `d1 | d2` should behave like it does in my code (prefer the first, not the last). I kinda like this, because it makes dict.__or__ a *companion* to .update(), not a replacement (since update prefers the last).
But this is exactly the opposite of what the people who advocate use of an operator want. As far as I can see, all of them want update semantics, because that's the more common use case where the current idioms feel burdensome.
True... maybe that really is a good case for the + then, as something like .update(). Personally, I think making dict be more set-like is way more interesting/useful, because of the *filtering* capabilities: # drop keys d1 -= (keys_ignored, ...) # apply [inverted] mask d1 &= (keys_required, ...) d1 ^= (keys_forbidden, ...) __or__ would still work like dict.viewkeys.__or__, and behaves like a bulk .setdefault() which is another neat property: # same as looping d2 calling d1.setdefault(...) d1 |= d2 Using + for the .update(...) case seems nice too :) -- C Anthony