[Python-ideas] PEP: Dict addition and subtraction

Antoine Pitrou solipsis at pitrou.net
Thu Mar 21 15:21:51 EDT 2019


On Thu, 21 Mar 2019 17:59:41 +0000
Rhodri James <rhodri at kynesim.co.uk> wrote:
> 
> >> And to those who support this PEP, code examples where a dict merge
> >> operator will help are most welcome!  
> 
> I don't use Python often enough to have much to offer, I'm afraid.  The 
> sort of occasion I would use dict merging is passing modified 
> environments to subcommands.  Something like:
> 
> def process():
>      if time_to_do_thing1():
>          thing1(base_env + thing1_env_stuff + env_tweaks)
>      if time_to_do_thing2():
>          thing2(base_env + thing2_env_stuff + env_tweaks)
> 
> ...and so on.  The current syntax for doing this is a tad verbose:
> 
> def process():
>      if time_to_do_thing1():
>          env = base_env.copy()
>          env.update(thing1_env_stuff)
>          env.update(env_tweaks)
>          thing1(env)
> 	del env
>      if time_to_do_thing2():
>          env = base_env.copy()
>          env.update(thing2_env_stuff)
>          env.update(env_tweaks)
>          thing2(env)
>          del env

Ah, you convinced me there is a use case indeed (though `del env` isn't
necessary above).  I would still prefer something that's not an
operator, but I agree there is potential to improve the current state
of affairs.

Note that, if you're able to live with a third-party dependency, the
`toolz` package has what you need (and lots of other things too):
https://toolz.readthedocs.io/en/latest/api.html#toolz.dicttoolz.merge

Regards

Antoine.




More information about the Python-ideas mailing list