2016-04-13 9 views
0

私は約50,000の整数値を含む辞書と、100個のキーを含むセットを持っています。私の内側のループは、dict項目の値を予測不能な方法で増分または減分します。dict値のソートされたビューの維持?

定期的に、セットの1つのメンバーを、セット内にない最大のエレメントのキーで置き換える必要があります。仮にdict項目がソートされていた場合、このルーチンの呼び出しの間でソート順が劇的にではなくわずかに変化します。

毎回ディクテーション全体を並べ替えるのは無駄に見えますが、それはすでに「ほとんど」ソートされているためです。私は時期尚早な最適化が有罪かもしれませんが、これは非常に多くの反復を実行するのでパフォーマンスは重要ですので、明らかに効率的でpythonicなアプローチがあるかどうかを私のベターに尋ねる価値があると思いました。

私はdict "views"という概念を知っています。内容が変わると更新される内容にWindowsがあります。 「ソートされたビュー」のようなものはありますか?

+0

辞書のキーは何ですか?また、最大値を見直す前に値の修正が何回起こっていますか? – Markus

+0

鍵は整数の範囲(50,000)であり、最大値を見つけるために必要な時間の間に50回程度の変更があります。 BTW私は「増加または減少」と言ってはいけません: - より正確には、それらはしばしば+/- 1の量で変更されますが、常に最大値の10%未満です。 – JHD

+0

それから、 'Counter'オブジェクト(Francescoが提案したようなもの)を使うのがおそらく道のりです。 – Markus

答えて

0

代わりdictを使用してのあなたがきちんとmost_common(n)メソッドを持つCounterオブジェクトを使用することができた

戻るnは少なくとも最も一般的なから最も一般的な要素とそれらのカウントのリスト。

関連する問題