大きい辞書をPythonで検索することの効率について簡単に質問しました。私は大きなカンマ区切りのファイルを読み込み、各行からキーと値を取得しています。私のキーがすでに辞書に入っている場合は、辞書に記載されている値に値を追加します。もしそのキーが辞書に存在しなければ、単にその値を追加します。以前私はこれを使用していた:効率的な辞書検索ですか?
はif key in data_dict.keys():
add values
else:
data_dict[key] = value
これはかなり速い始まりますが、辞書が大きくなるにつれて、それは私がすべてでそれを使用することができない点まで、遅く、遅くなります。これは無限に高速であり、そして3秒でコード35万行の上に読み取り/書き込みができ
try:
# This will fail if key not present
data_dict[keyStr] = input_data[keyStr] + load_val
except:
data_dict[keyStr] = load_val
:私は、私はこれに辞書内のキーを検索する方法を変更しました。
私の質問は、なぜif key in data_dict.keys():
コマンドがtry: data_dict[keyStr]
の呼び出しよりもはるかに長い時間を取るのですか?なぜ、Pythonは辞書の中でキーを検索するときにtry
文を利用しないのですか?
一般的に、_all_例外は検出せず、見つかったときに処理します。ここでは、例えば:except KeyError:...を使用します。 – askewchan
あなたのサンプルコードは混乱します。最初のスニペットでは、 'data_dict'に' key'があるのを確認していますが、 'key'が' input_data'になかった場合には、 'KeyError'例外を与える唯一のものが第二のものです。これは、完全な答えを提供することを難しくします... – martineau