ホームページ >バックエンド開発 >Python チュートリアル >Pythonで2つの辞書をマージする方法
Python で 2 つの辞書をマージすることは、比較的一般的な問題です。この記事では、2 つの辞書を結合して比較するためのいくつかの解決策を紹介します。
この問題については、より直観的なアイデアは、2 つの辞書を追加し、結果の辞書に値を割り当てることです。コードは次のとおりです:
Python は 2 つの辞書をマージします (方法 1) )
dictMerged1 = dict( dict1.items() + dict2.items() )
ただし、この方法はマージに時間がかかり、より効率的なコードは次のとおりです:
Python は 2 つの辞書をマージします (方法 2)
dictMerged2 = dict( dict1, **dict2 )
このメソッドは、dict() ファクトリ メソッド (Python 2.2 以降) を使用します。入力パラメータが別の辞書 (ここでは dict1) の場合、ファクトリ メソッドが呼び出されるときに、内容が dict1 からコピーされて新しい辞書が生成されます。 Python 2.3 以降、このファクトリ メソッドでは辞書またはキーワード引数辞書を呼び出すことができます。
ただし、この呼び出しメソッドの場合、dict() は最大 1 つのパラメーター (または name=value の可変長パラメーターのセット) のみを受け入れ、別の辞書は受け入れないことに注意してください。したがって、単純に 2 つのパラメーター dict1 と dict2 を使用する直感的な方法では、次のエラーが表示されます。
>>> dictMerged = dict( dict1, dict2 ) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: dict expected at most 1 arguments, got 2
これが、上記の方法 2 で **dict2 が使用されていることがわかる理由です。 C に精通している友人は、* ここではポインターを意味するものではないことに注意してください。これは、Python で可変長関数パラメーターを記述する方法です (可変長関数パラメーターに関する関連知識については、この記事を参照してください)。ここで、** は辞書ベースの可変長関数パラメータを意味します。
メソッド 2 は、以下のメソッド 3 と同様にコードを実行します。つまり、まず dict1 を dictMerged にコピーし、次に update() 操作を実行します。
Python は 2 つの辞書をマージします (メソッド3)
dictMerged3 = dict1.copy() dictMerged3.update( dict2 )
コピー操作の最初のステップでは、組み込みメソッド copy() を使用したこのコピー メソッドは、メソッド 2 のコピー結果と同じですが、「Core As」に従っています。 『Python プログラミング (第 2 版)』のセクション 7.3.2 で説明されているように、既存の辞書から新しい辞書を生成するメソッド dictNew = dict(dictOld) は、組み込みメソッド dictNew = dictOld.copy() よりも遅いため、この本 copy() メソッドを使用することをお勧めします。
したがって、これらの方法のうち、方法 3 が最も効率的であり、コードも読みやすくなります。
関連する推奨事項: 「Python チュートリアル 」
以上がPythonで2つの辞書をマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。