ホームページ >バックエンド開発 >Python チュートリアル >Python でネストされた辞書を深くマージし、競合を処理するにはどうすればよいですか?

Python でネストされた辞書を深くマージし、競合を処理するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-04 22:55:14985ブラウズ

How Can I Deep Merge Nested Dictionaries in Python and Handle Conflicts?

Python での辞書のディープマージ

複雑なデータ構造を扱う場合、多くの場合、複数の辞書をマージして統合された辞書を作成する必要があります。表現。辞書に「ディープ マージ」と呼ばれる、辞書の入れ子構造が含まれている場合、特別な課題が 1 つ発生します。

この課題に取り組むには、Python で再帰的アプローチを活用できます。次の関数は、競合を適切に処理しながら辞書を効果的にマージします。

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            elif a[key] != b[key]:
                raise Exception('Conflict at ' + '.'.join(path + [str(key)]))
        else:
            a[key] = b[key]
    return a

値が競合する場合、関数は例外を発生させます。

使用法を説明するために、次の例を考えてみましょう。

dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}}
dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}}

merge(dict1, dict2) を使用すると、必要な結果を取得できます。 result:

{1:{'a':{'A'}}, 2:{'b':{'B'},'c':{'C'}}, 3:{'d':{'D'}}}

このアプローチにより、ディクショナリ内のネストが効率的に処理され、複雑なデータ構造の深いマージが可能になります。

以上がPython でネストされた辞書を深くマージし、競合を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。