A collections.ChainMap behaves like a merged dictionary without having to copy over the keys and values. For example:
>>> mydict = {"a": 0}
>>> defaults = {"a": 5, "b": 10}
>>> chain = collections.ChainMap(mydict, defaults)
>>> dict(chain)
{'a': 0, 'b': 10}