ホームページ >バックエンド開発 >Python チュートリアル >既存の値を保持しながら Python でネストされた辞書を更新するにはどうすればよいですか?
既存の値を保持したネストされた辞書の更新
Python では、特に値を結合せずに値をマージする場合、ネストされた構造を持つ辞書の更新は難しい場合があります。既存のものを上書きします。この質問では、levelA の値を保持しながら、ネストされた辞書 Dictionary1 を更新の内容で更新する方法を検討します。
元のアプローチの欠陥
指定された Python コードは、一般的な間違いを示しています。
dictionary1.update(update)
この単純な更新では、レベル A が保持されません。これは、更新辞書が優先され、レベル 1 の下の構造全体が上書きされるためです。
再帰的ソリューション
回答で提供されている解決策は、次のことを含む再帰的アプローチを提案しています。
更新されたコード
提案された回答に基づいて改善されたコードは次のとおりです:
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 中国語 Web サイトの他の関連記事を参照してください。