mesclagem profunda dos dicionários de dicionários em python
mesclando vários dicionários com chaves aninhadas pode ser uma tarefa desafiadora. Vamos considerar o seguinte exemplo:
dict1 = { 1: {"a": {"A"}}, 2: {"b": {"B"}} } dict2 = { 2: {"c": {"C"}}, 3: {"d": {"D"}} }
a saída desejada é:
dict3 = { 1: {"a": {"A"}}, 2: {"b": {"B"}, "c": {"C"}}, 3: {"d": {"D"}} }
Para alcançar essa mesclagem profunda, podemos utilizar uma função recursiva:
def merge(a: dict, b: dict, path=[]): for key in b: if key in a: if isinstance(a[key], dict) and isinstance(b[key], dict): merge(a[key], b[key], path [str(key)]) else: a[key] = b[key] else: a[key] = b[key] return a
Esta função leva dois dicionários, A e B, e um caminho que acompanha o local atual na estrutura aninhada. Ele itera através das chaves em B e verifica se a tecla correspondente existe em a. Se os valores nessa chave são ambos os dicionários, ela chama a função de mesclagem recursivamente para mesclar esses subdicionários. Caso contrário, ele atualiza o valor em A com o valor de b.
Para o exemplo dita acima, a função Merge produziria o resultado desejado:
print(merge(dict1, dict2))
a saída seria: 1: {'a': {'a'}}, 2: {'b': {'b'}, 'c': {'c'}}, 3: {'d': {'d'}} }
{ 1: {'a': {'A'}}, 2: {'b': {'B'}, 'c': {'C'}}, 3: {'d': {'D'}} }nota:
Esta função muda o primeiro dicionário, a. Se você deseja preservar seu conteúdo, pode fazer uma cópia antes da fusão, por exemplo, Merge (dict (a), b).
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3