1. ホーム
  2. python

[解決済み] Pythonで辞書をコピーする高速な方法

2023-03-16 06:22:03

質問

私は辞書をよく使うPythonのプログラムを持っています。私は何千回も辞書のコピーを作成する必要があります。私はキーと関連するコンテンツの両方のコピーが必要です。コピーは編集され、オリジナルにリンクされてはいけません (たとえば、コピーの変更はオリジナルに影響を及ぼしてはいけません。)。

キーは文字列、値は整数(0/1)です。

現在、簡単な方法を使っています。

newDict = oldDict.copy()

コードのプロファイリングによると、コピー操作にほとんどの時間がかかっていることがわかります。

より高速な代替手段があるのでしょうか? dict.copy() メソッドに代わる高速な方法はありますか?何が一番速いでしょうか?

どのように解決するには?

を見ると C ソース を見ると、Python の dict の操作で、かなり素朴な(しかし効率的な)コピーを行っていることがわかります。 これは本質的に、以下の呼び出しに集約されます。 PyDict_Merge :

PyDict_Merge(PyObject *a, PyObject *b, int override)

これは、それらが同じオブジェクトであるかどうか、そしてそれらの中にオブジェクトがあるかどうかのようなことを素早くチェックします。 その後、ターゲットの dict に一度だけサイズ変更と割り当てを行い、要素を 1 つずつコピーします。 私は、組み込みの copy() .