首頁 > 後端開發 > Python教學 > 如何在保留現有值的同時更新 Python 中的巢狀字典?

如何在保留現有值的同時更新 Python 中的巢狀字典?

Mary-Kate Olsen
發布: 2024-11-09 06:35:02
原創
701 人瀏覽過

How to Update Nested Dictionaries in Python while Preserving Existing Values?

更新巢狀字典並保留現有值

在Python 中,更新具有巢狀結構的字典可能很棘手,特別是當您想要合併值而無需覆蓋現有的。本問題探討如何使用 update 的內容更新巢狀字典dictionary1,同時保留 levelA 中的值。

原始方法中的缺陷

給定的Python 程式碼示範了一個常見錯誤:

dictionary1.update(update)
登入後複製

這個簡單的更新不會保留levelA,因為更新字典優先並且覆蓋level1 下的整個結構。

遞歸解決方案

答案中提供的解決方案建議採用遞歸方法,其中涉及:

  1. 迭代通過更新字典中的鍵和值。
  2. 如果值是映射(另一個字典),則遞歸呼叫原始字典中對應子字典的更新。
  3. 否則,照常更新數值。

更新程式碼

這是基於建議的改進代碼答案:

def update(d, u):
    for k, v in u.items():
        if isinstance(v, collections.abc.Mapping):
            d[k] = update(d.get(k, {}), v)
        else:
            d[k] = v
    return d

dictionary1 = {
    "level1": {
        "level2": {"levelA": 0, "levelB": 1}
    }
}
update = {
    "level1": {
        "level2": {"levelB": 10}
    }
}
updated_dict = update(dictionary1, update)
print(updated_dict)
登入後複製

輸出

{'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
登入後複製

解釋

此解決方案遞歸更新巢狀字典,保留現有levelA 值,同時如預期更新levelB 下的值。

以上是如何在保留現有值的同時更新 Python 中的巢狀字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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