Skip to main content
 首页 » 编程设计

python之有没有更简洁的方法来查找字典中最高的 5 个值

2025年05月04日10yyy_WW

现在,我将整个字典循环五次,并在每次迭代后保留最高值并删除条目。但这似乎是做我想做的事情的一种非常讨厌的方式。本质上,我想获得字典中前 5 个最大的值,并返回键,有没有比遍历它五次更好的方法来做到这一点?

请您参考如下方法:

是的,通过使用 heapq.nlargest() function :

from heapq import nlargest 
 
five_largest = nlargest(5, yourdict, key=yourdict.get) 

这比重复循环或排序更有效。

heapq 算法将对您的键进行直接循环,仅将其中的 5 个保留在保持不变性的堆中,然后在循环完成后返回这 5 个元素的排序顺序。循环是 O(N),保持循环不变是 O(logK)(其中 K 是堆大小),排序 O(KlogK)。总复杂度:O(NlogK)

排序需要对完整 字典进行排序,时间复杂度为 O(NlogN)。这意味着 N 越大,heapq.nlargest() 在性能上的优势就越大。