擅长:python、mysql、java
<p><a href="https://docs.python.org/3/library/collections.html#collections.Counter" rel="nofollow noreferrer">^{<cd1>}</a>可以:</p>
<pre class="lang-py prettyprint-override"><code>the_list = ["a","a","b","b","c","c","c","d","d","d","d"]
counter = Counter(sorted(the_list))
top_3 = counter.most_common(3)
</code></pre>
<p>此时,<code>top_3</code>的形式为<code>[(<entry>, <freq>)]</code>,例如</p>
<pre><code>[('d', 4), ('c', 3), ('a', 2)]
</code></pre>
<p>通过列表理解从中取出第一个元素:</p>
<pre><code>result = [item for item, freq in top_3]
</code></pre>
<p>我们得到了</p>
<pre><code>['d', 'c', 'a']
</code></pre>
<p>注:</p>
<ol>
<li><p>我们将<code>sorted</code>列表传递给<code>Counter</code>,因为否则它将根据插入顺序断开连接;排序在某种程度上强制插入顺序为字母顺序</p>
</li>
<li><p><code>.most_common(3)</code>将返回最多3个元素,因此我们没有问题,例如,即使只有2个唯一的条目。例如,如果<code>the_list = ["b", "a"]</code>,<code>result</code>将是<code>["a", "b"]</code>,即使唯一元素的数量小于3</p>
</li>
</ol>