ChainMap reúne vários mappings em uma visão dinâmica. A busca percorre os mapas da esquerda para a direita, por isso argumentos de CLI podem sobrescrever ambiente e padrões sem produzir um novo dicionário.

from collections import ChainMap

defaults = {"theme": "light", "timeout": 30}
environment = {"timeout": 10}
cli = {"theme": "dark"}

config = ChainMap(cli, environment, defaults)
print(config["theme"], config["timeout"])
config["debug"] = True  # writes to cli, the first mapping

Como usar com segurança

Escritas e exclusões atuam somente no primeiro mapping. Se você precisa de uma fotografia independente, mescle dicionários explicitamente. Use new_child() para abrir um escopo temporário e parents para voltar ao conjunto anterior.

Para aprofundar a base, consulte guia de collections em Python e guia de type hints.

A documentação oficial do Python, consultada em 22 de julho de 2026, descreve a API, os casos-limite e a compatibilidade entre versões.