глубокое слияние словарей в Python
объединение нескольких словарей с вложенными ключами может быть сложной задачей. Давайте рассмотрим следующий пример:
dict1 = { 1: {"a": {"A"}}, 2: {"b": {"B"}} } dict2 = { 2: {"c": {"C"}}, 3: {"d": {"D"}} }
желаемый вывод:
dict3 = { 1: {"a": {"A"}}, 2: {"b": {"B"}, "c": {"C"}}, 3: {"d": {"D"}} }
для достижения этого глубокого слияния мы можем использовать рекурсивную функцию:
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
] Эта функция принимает два словаря: a и b и путь, который отслеживает текущее местоположение в вложенной структуре. Он итерации через ключи в B и проверяет, существует ли соответствующий ключ в A. Если значения в этом ключе являются словари, это вызывает функцию слияния рекурсивно, чтобы объединить эти субдиании. В противном случае он обновляет значение в a со значением из b. 1: {'a': {'a'}}, 2: {'b': {'b'}, 'c': {'c'}}, 3: {'d': {'d'}} }
примечание:
print(merge(dict1, dict2))]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3