更新巢狀字典並保留現有值
在Python 中,更新具有巢狀結構的字典可能很棘手,特別是當您想要合併值而無需覆蓋現有的。本問題探討如何使用 update 的內容更新巢狀字典dictionary1,同時保留 levelA 中的值。
原始方法中的缺陷
給定的Python 程式碼示範了一個常見錯誤:
dictionary1.update(update)
這個簡單的更新不會保留levelA,因為更新字典優先並且覆蓋level1 下的整個結構。
遞歸解決方案
答案中提供的解決方案建議採用遞歸方法,其中涉及:
更新程式碼
這是基於建議的改進代碼答案:
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中文網其他相關文章!