[Python-ideas] The @update operator for dictionaries

Meitham Jamaa m at meitham.com
Sat Mar 9 13:44:23 EST 2019


It might also be worth considering YAML's own dict merge operator, the
"<<" operator, as in https://yaml.org/type/merge.html as this is the
existing Python's shift operator added to dict and will require no
change to the synatx::

  a = a << b

Meitham


On 03/10, Chris Angelico wrote:
> On Sun, Mar 10, 2019 at 3:16 AM Jonathan Fine <jfine2358 at gmail.com> wrote:
> >
> >  Anders Hovmöller wrote:
> >
> > > I don't understand what you mean. Can you provide examples that show the state of the dicts before and after and what the syntax would be the equivalent of in current python?
> >
> > If a.__radd__ exists, then
> >     a += b
> > is equivalent to
> >     a = a.__radd__(b)
> >
> > Similarly, if a.__iat_update__ exists then
> >     a @update= b
> > would be equivalent to
> >     a = a.__iat_update__(b)
> >
> > Here's an implementation
> >     def __iat_update__(self, other):
> >         self.update(other)
> >         return self
> >
> > Thus, 'b' would be unchanged, and 'a' would be the same dictionary as
> > before, but updated with 'b'.
> 
> With something this long, how is it better from just writing:
> 
> a = a.update_with(b)
> 
> ? What's the point of an operator, especially if - by your own
> statement - it will backward-incompatibly change the language grammar
> (in ways that I've yet to understand, since you haven't really been
> clear on that)?
> 
> ChrisA
> 

-- 
Meitham Jamaa

http://meitham.com
GPG Fingerprint: 3934D0B2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20190309/92c4dbc7/attachment.sig>


More information about the Python-ideas mailing list