ネストされた辞書を操作する場合、多くの場合、他のレベルに影響を与えずに特定のキーを更新する必要があります。ただし、Python の標準的な更新方法では、同じレベルのすべてのキーが上書きされるため、この目標を達成することが困難になります。
再帰的アプローチは、この問題に効果的に対処できます。辞書を再帰的に走査することで、既存の構造を維持しながら、適切な深さでキーを識別して更新できます。
たとえば、次の再帰関数を使用すると、levelA を上書きせずに、更新の内容を Dictionary1 に更新できます。
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 中国語 Web サイトの他の関連記事を参照してください。