It’s not exactly an answer to your question but I’d consider using ChainMap
to be an idiomatic and elegant way to do what you propose (merging dictionaries in-line):
>>> from collections import ChainMap
>>> d1 = {1: 'one', 2: 'two'}
>>> d2 = {3: 'three'}
>>> ds = [d1, d2]
>>> dict(ChainMap(*ds))
{1: 'one', 2: 'two', 3: 'three'}
Although it’s not a particularly transparent solution, since many programmers might not know exactly how a ChainMap
works. Note that (as @AnttiHaapala points out) “first found is used” so, depending on your intentions you might need to make a call to reversed
before passing your dict
s into ChainMap
.
>>> d2 = {3: 'three', 2: 'LOL'}
>>> ds = [d1, d2]
>>> dict(ChainMap(*ds))
{1: 'one', 2: 'two', 3: 'three'}
>>> dict(ChainMap(*reversed(ds)))
{1: 'one', 2: 'LOL', 3: 'three'}