【问题标题】:Maintaining a sorted view of dict values?维护 dict 值的排序视图?
【发布时间】:2016-04-13 17:00:53
【问题描述】:

我有一个包含大约 50,000 个整数值的 dict,以及一个包含 100 个键的集合。我的内部循环以不可预测的方式递增或递减 dict 项的值。

我需要定期将集合中的一个成员替换为集合中尚未包含的最大元素的键。顺便说一句,如果对 dict 项进行了排序,则排序顺序会在此例程的调用之间略有变化,而不是显着变化。

每次重新排序整个 dict 似乎很浪费,尽管考虑到它已经“几乎”排序,所以可能不那么浪费。虽然我可能对过早的优化感到内疚,但性能很重要,因为这将运行大量的迭代,所以我认为值得向我的高手询问是否有明显更高效和 Pythonic 的方法。

我知道 dict "views" 的概念 - Windows 上的内容会随着内容的变化而更新。有没有“排序视图”之类的东西?

【问题讨论】:

  • 你的字典键是什么?在您再次寻找最大值之前,这些值发生了多少次修改?
  • 键是整数范围(50,000),在我需要找到最大值的时间之间可能有 50 次左右的修改。顺便说一句,我不应该说“增量或减量”:-更准确地说,它们的变化量通常为 +/-1,但始终小于最大值的 10%。
  • 那么使用Counterobject(正如Francesco所建议的)可能是要走的路。

标签: python sorting dictionary


【解决方案1】:

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

返回 n 个最常见元素的列表及其从最常见到最少的计数。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多