[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