擅长:python、mysql、java
<p>排序是<a href="https://docs.python.org/3/howto/sorting.html#sort-stability-and-complex-sorts" rel="nofollow noreferrer">guaranteed to be stable</a>,这意味着如果某些项具有相同的键值,则保留它们的原始顺序。你知道吗</p>
<p>更容易看到字符串发生了什么,没有相反的顺序:</p>
<pre><code>list(sorted(['zzz', 'aa', 'cc', 'bb', 'bbb', 'aaa'], key=len))
# ['aa', 'cc', 'bb', 'zzz', 'bbb', 'aaa']
</code></pre>
<p>所有长度为2的字符串首先按其原始顺序排列,然后所有长度为3的字符串也按其原始顺序排列。你知道吗</p>
<p>在代码中,计数为2的值依次为3、11、11和3。因此,排序后它们将按此顺序排列(按您的要求反转,但看起来是一样的)。你知道吗</p>
<p>如果要先按计数,然后按值(而不是按原始顺序)排序,则必须使用以下命令使其显式:</p>
<pre><code>def frequency_sorting(numbers):
return sorted(numbers, key=lambda i:(numbers.count(i), -i), reverse=True)
</code></pre>