擅长:python、mysql、java
<p><code>heapq.nlargest</code>这是您想要的:</p>
<pre><code>import heapq
from operator import itemgetter
largest_names = [x[0] for x in heapq.nlargest(6,your_list,key=itemgetter(1))]
</code></pre>
<p>它将比排序更有效,因为它只接受最大的元素而丢弃其余的元素。当然,如果由于其他原因对列表进行了预排序,那么它的效率不如切片。在</p>
<p>复杂性:</p>
<ul>
<li>健康状况:O(N)</li>
<li>排序:O(NlogN)</li>
<li>切片(仅在预排序时):O(6)</li>
</ul>
<p>说明:</p>
^{pr2}$
<p>这行返回(name,value)元组的列表,但是只有最大的6个元组比较由元组中的第二个(index=1>;<code>key=itemgetter(1)</code>)元素完成。在</p>
<p>它只存储一个tuples的最大值的一部分。在</p>
<hr/>
<p>您可能感兴趣的是,您也可以将此数据存储为<code>collections.Counter</code>。在</p>
^{3}$
<p>仅仅为了进行这种计算而进行转换可能不值得(这毕竟是heapq的目的;-),但是为了使数据更易于处理,可能值得进行转换。在</p>