擅长:python、mysql、java
<p>您的代码不起作用,因为11和3(在您的示例中)具有相同的计数;排序的优先级相同。你知道吗</p>
<p>所以<code>3, 11</code>是一个有序的序列,就像<code>11, 3</code>或<code>3, 3, 11, 11</code>或<code>3, 11, 3, 11</code>一样,所有这些都是正确的,选择取决于算法的实现方式。你知道吗</p>
<p>因此,您需要指定顺序的键不仅是相等元素的数目,而且是相等元素的数目(具有更高的重要性)和元素本身(如果您需要的话)。因此,如果您想要相等元素数的倒序和(然后)元素值的顺序,您可以使用:</p>
<p><code>sorted(numbers, key=lambda i:(-numbers.count(i),i))</code></p>
<p>或者同等地</p>
<p><code>sorted(numbers, key=lambda i:(numbers.count(i),-i),reverse=True)</code></p>
<p>您可能希望按元素的数量和(然后)元素的第一次出现来排序,在这种情况下,您可以使用:</p>
<p><code>sorted(numbers, key=lambda i:(-numbers.count(i),numbers.index(i)))</code></p>
<p>或者可以使用其他方法;这取决于您希望如何对计数相同但值不同的元素进行排序</p>