使用巢狀字典時,通常需要更新特定鍵而不影響其他層級。然而,Python 中的標準更新方法會覆寫同一層級的所有鍵,這使得實現這一目標具有挑戰性。
遞迴方法可以有效解決這個問題。透過遞歸遍歷字典,我們可以在適當的深度識別和更新鍵,同時保留現有的結構。
例如,可以使用以下遞歸函數將update 的內容更新到dictionary1,而不覆蓋levelA:
def update(d, u): for k, v in u.items(): if isinstance(v, dict): d[k] = update(d.get(k, {}), v) else: d[k] = v return d
在此函數中,我們檢查v 是否是字典,並使用適當的子字典遞歸呼叫update。如果 v 不是字典,我們只需更新 d 中對應的按鍵即可。這可以確保中間鍵不會被覆蓋。
考慮以下範例:
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dictionary = update(dictionary1, update) print(updated_dictionary) # Output: # {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
如您所見,levelA 保留在更新的字典中,儘管更新包含 levelB 的值。這證明了遞歸方法的有效性。
以上是如何在 Python 中更新巢狀字典而不覆蓋中間鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!