小编188*_*881的帖子

如何对数组进行排序并在 Python 中对其进行计数?

我只想按降序查找前 3 个不同的项目。如果有决胜局,请按字母顺序排序。如果有 3 个或更少的项目,返回不同的项目列表就足够了。

所以如果我有输入: ["a","a","b","b","c","c","c","d","d","d","d"]

输出将是 ["d","c","a"]

因为 d 有 4 个计数,c 有 3 个计数,a并且b具有相同的频率,但a按字母顺序排在第一位。

在 MySQL 中,我通常会使用这个:

SELECT id, COUNT(*) as frequency FROM mylist GROUP BY id ORDER BY frequency, id
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 Python 中做到这一点?

我使用基于SAI SANTOH CHIRAG 解决方案的代码:

def main(output):
    arr = sorted(output,key=lambda i:[output.count(i),-ord(i)],reverse=True)
    out = []
    for i in arr: 
        if i not in out: out.append(i) 
        print(out[:3])
Run Code Online (Sandbox Code Playgroud)

但为什么结果是这样的:

Input (stdin) = a a a b b c d …
Run Code Online (Sandbox Code Playgroud)

python arrays sorting

5
推荐指数
1
解决办法
212
查看次数

标签 统计

arrays ×1

python ×1

sorting ×1