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.