Я какое-то время искал решение этой проблемы, но все решения предполагают, что присоединяемые ключи находятся на одном и том же уровне вложенности словарей.
Чтобы сделать его коротким, имея эти два слова:
dict1 = {'Head':
{'Face':
{'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
},
'Nose': {},
'Mouth': {}
}
}
}
dict2 = {'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
}
}
Я хочу следующее:
dict3 = {'Head':
{'Face':
{'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
},
'Nose': {},
'Mouth': {}
}
}
}
Как видите, ключ "Глаза" должен быть точкой слияния в этом небольшом примере, и он находится на третьем уровнедерево в dict1 и на первом уровне в dict2.Словари могут иметь перекрытие для всех ключей / значений (на разных уровнях, как в случае с «глазами») или вообще не перекрываться, но я также должен избегать дублирования.
Дело в том,Я обнаружу, что либо один словарь уже включен в другой, либо они вообще не будут перекрываться.Я пытаюсь "обрезать" гигантское дерево, сохраняя только определенные узлы на основе поиска по слову (поиск по чистой строке).Проблема состоит в том, что некоторые из узлов (и производные, более глубокие узлы) могут включать в себя некоторые другие, но иногда они могут вообще не совпадать.Думайте об этом как о древовидном / вложенном словаре вашего тела.Вы можете искать «клетку», найти большой узел, называемый «клетками крови», который включает в себя другие узлы, такие как «клетки свертывания», «транспортные клетки» или «защитные клетки».Кроме того, в другой ветви главного дерева вы можете найти, например, «костные клетки».Все они будут найдены при поиске, некоторые из них могут включать другие («коагуляция», «транспорт» или «защитный» будет внутри «клеток крови»), но некоторые другие могут быть отделены от этого дерева («костные клетки»).).Я хочу, чтобы они были в одном глобальном вложенном дереве.
Как в этом случае объединить несколько словарей?Заранее спасибо!