2016-04-13 47 views
0

我有一個包含大約50,000個整數值的字典,以及一個包含其中100個鍵的集合。我的內循環以不可預知的方式遞增或遞減字典項目的值。維護字典值的排序視圖?

定期我需要用集合中尚未包含的最大元素的鍵來替換集合中的一個成員。順便說一下,如果字典項目已排序,那麼在此例程的調用之間,排序的順序會稍微改變,而不是顯着改變。

每次對整個字典進行重新排序似乎很浪費,儘管可能已經「差不多」排序了。雖然我可能會犯過早的優化,但是性能會很重要,因爲這將會進行大量的迭代,所以我認爲值得問問我的上級是否有明顯更高效的pythonic方法。

我知道字典「意見」的概念 - Windows上的內容更新爲內容更改。有沒有像「分類視圖」這樣的東西?

+0

什麼是您的字典的關鍵?在再次尋找最大值之前,對這些值進行多少修改? – Markus

+0

鍵是整數範圍(50,000),並且在我需要找到最大值的時間之間可能有50次左右的修改。順便說一句,我不應該說「增量或減量」: - 更準確地說,它們的變化量通常爲+/- 1,但始終小於其最大值的10%。 – JHD

+0

然後使用'Counter'對象(正如Francesco所建議的)可能就是要走的路。 – Markus

回答

0

而不是使用一個dict的,你可以使用一個Counter對象,它有一個整潔most_common(n)方法,

返回n個最常見的元素和它們的計數從最常見到最低的列表。