[频率排序问题python-sorted()没有给出我期望的结果

问题描述 投票:1回答:2

我有这样的代码:

def frequency_sorting(numbers):
    return sorted(numbers, key=lambda i:numbers.count(i),reverse=True)

或者:

def frequency_sorting(numbers):
    return sorted(numbers, key=numbers.count,reverse=True)

当我打电话时:

frequency_sorting([3,4,11,13,11,4,4,7,3])

都给我:

[4, 4, 4, 3, 11, 11, 3, 13, 7]

我希望:

[4, 4, 4, 3, 3, 11, 11, 13, 7]

我知道如何解决最初的想法。我只需要从理论上理解为什么我的代码不起作用。

python sorting lambda frequency
2个回答
0
投票

您的代码无效,因为11和3(在您的示例中)具有相同的计数;相同的排序优先级。


1
投票

排序为guaranteed to be stable。因此,如果某些项目具有相同的键值,则保留原始顺序。


0
投票

您的代码无效,因为11和3(在您的示例中)具有相同的计数;相同的排序优先级。

© www.soinside.com 2019 - 2024. All rights reserved.