トピックに関する私の好奇心を主に満たすための簡単な質問。
私はいくつかの大きなpython SQliteデータベースバックエンドを備えたプログラムを書いており、将来多数のレコードを処理する予定です。そのため、できる限り最適化する必要があります。
いくつかの機能については、辞書のキーを検索しています。私はプロトタイピングに「in」キーワードを使用しており、「in」キーワードは一般的にO(n)(これは単に変換されるため)であることを知っているので、後で戻ってそれらの検索を最適化する予定ですto pythonリスト全体を繰り返し、各要素を比較します。)python dictは基本的に単なるハッシュマップなので、python解釈するのに十分に賢いインタプリタ:
if(key in dict.keys()):
...code...
に:
if(dict[key] != None):
...code...
基本的には同じ操作ですが、上部はO(n)、下部はO(1)になります。
私がコードで一番下のバージョンを使用するのは簡単ですが、それから私はただ知りたいと思って質問したいと思いました。
Dictのin演算子は、O(1)の平均ケース時間複雑さを持っています。他のdict()メソッドの時間の複雑さについての詳細は、こちら link をご覧ください。