首頁 > 後端開發 > Python教學 > 如何在 Python 中執行巢狀字典的深度合併?

如何在 Python 中執行巢狀字典的深度合併?

DDD
發布: 2024-12-04 02:03:10
原創
930 人瀏覽過

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 中是否存在相應的鍵。如果該鍵處的值都是字典,則它遞歸地呼叫合併函數來合併這些子字典。否則,它會使用 b 中的值來更新 a 中的值。

對於上面的範例字典,合併函數將產生所需的結果:

print(merge(dict1, dict2))
登入後複製

輸出將為:

{
    1: {'a': {'A'}},
    2: {'b': {'B'}, 'c': {'C'}},
    3: {'d': {'D'}}
}
登入後複製

注意:

注意:注意: >此函數會改變第一個字典a。如果您想保留其內容,可以在合併之前複製一份,例如 merge(dict(a), b)。

以上是如何在 Python 中執行巢狀字典的深度合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板