«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как выполнить глубокое слияние вложенных словари в Python?

Как выполнить глубокое слияние вложенных словари в Python?

Опубликовано в 2025-03-22
Просматривать:448

How to Perform a Deep Merge of Nested Dictionaries in Python?

глубокое слияние словарей в 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