擅长:python、mysql、java
<p>使用itertools:</p>
<pre><code>from itertools import chain, islice, groupby
from operator import itemgetter
n = 2
# group the items having same count together
grouped = (list(group) for _, group in groupby(c.most_common(), key=itemgetter(1)))
# slice first `n` of them
top_n = islice(grouped, n)
# flatten
result = list(chain.from_iterable(top_n))
</code></pre>
<p>其中<code>itemgetter(1)</code>有助于根据计数器项的频率对其进行分组(在元组中,第0项是项本身,第1项是其计数,因此我们使用1;还注意<code>groupby</code>需要<code>most_common</code>提供的排序数据)</p>
<p>运行示例:</p>
<pre><code># for n = 1
[("138885662", 3), ("144024400", 3)]
# for n = 2
[("138885662", 3), ("144024400", 3), ("192562407", 2)]
# for n = 3
[("138885662", 3), ("144024400", 3), ("192562407", 2), ("121332964", 1), ("185592680", 1)]
</code></pre>