2012-04-28 13 views
1

私はPythonの初心者です。いくつかのオブジェクトの数を格納するデータ構造が必要です。たとえば、最も訪問したウェブページを保存したいとします。まあ言ってみれば。私は最も訪問された100のウェブページを持っています。私は各ウェブページへの訪問回数を保持しています。リストを更新する必要があるかもしれません。間違いなく訪問回数を更新します。それは発注する必要はありません。 WebページIDを指定して、関連する訪問数を調べます。私は辞書を使うつもりです。これはPythonでこれを行うより速い方法がありますか?Python辞書構造、速度の問題

+6

'どのくらい速くPython辞書構造ですか? '非常に高速です。 – ChristopheD

+0

タイトルが多少間違っている可能性があります。しかし、私の懸念は理解できると思う。私はそれが私の目的のために最速かどうかを知りたい。あなたはそれについて何か考えていますか? –

+0

あなたのニーズに合った['collections.counter'](http://docs.python.org/library/collections.html#collections.Counter)も見ることができます。 – jamylak

答えて

3

この辞書は、このタスク(ウェブページIDを訪問カウントにマッピングする)に適した高速なデータ構造です。

Python辞書は、高速O(1)アクセスのためにhash tablesを使用して実装されています。彼らは非常に速く、それらを避けるためのほとんどの試みがコードの実行を遅くし、コードを見苦しいものにするでしょう。

P.S.また、この種の作業(カウントヒット)用に特別に設計されたcollections.Counterをご覧ください。初期デフォルト値が0に設定された辞書として実装されています。

1

Python辞書オブジェクトは、Python言語全体の中で最も最適化された部分の1つで、その理由はどこでも辞書が使用されているからです。

たとえば、通常、すべてのクラスのすべてのオブジェクトインスタンスは辞書を使用してインスタンスデータメンバーのコンテンツを保持し、クラスはメソッドを含む辞書であり、モジュールは辞書を使用してグローバルを保持し、モジュールをルックアップするなど。

辞書を使用してカウンタを保持することは、Pythonの優れたアプローチです。