维护字典值的排序视图?

问题描述:

我有一个包含大约50,000个整数值的字典,以及一个包含其中100个键的集合。我的内循环以不可预知的方式递增或递减字典项目的值。维护字典值的排序视图?

定期我需要用集合中尚未包含的最大元素的键来替换集合中的一个成员。顺便说一下,如果字典项目已排序,那么在此例程的调用之间,排序的顺序会稍微改变,而不是显着改变。

每次对整个字典进行重新排序似乎很浪费,尽管可能已经“差不多”排序了。虽然我可能会犯过早的优化,但是性能会很重要,因为这将会进行大量的迭代,所以我认为值得问问我的上级是否有明显更高效的pythonic方法。

我知道字典“意见”的概念 - Windows上的内容更新为内容更改。有没有像“分类视图”这样的东西?

+0

什么是您的字典的关键?在再次寻找最大值之前,对这些值进行多少修改? – Markus

+0

键是整数范围(50,000),并且在我需要找到最大值的时间之间可能有50次左右的修改。顺便说一句,我不应该说“增量或减量”: - 更准确地说,它们的变化量通常为+/- 1,但始终小于其最大值的10%。 – JHD

+0

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

而不是使用一个dict的,你可以使用一个Counter对象,它有一个整洁most_common(n)方法,

返回n个最常见的元素和它们的计数从最常见到最低的列表。