[Python-ideas] Adding "+" and "+=" operators to dict

C Anthony Risinger anthony at xtfx.me
Wed Feb 18 05:50:27 CET 2015


On Tue, Feb 17, 2015 at 10:08 PM, Stephen J. Turnbull <stephen at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150217/4ed93b1e/attachment.html>


More information about the Python-ideas mailing list