如何对数组进行排序并在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

我怎样才能在 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])

但为什么结果是这样的:

Input (stdin) = a a a b b c d d d d
output = ['d']
['d']
['d']
['d']
['d', 'a']
['d', 'a']
['d', 'a']
['d', 'a', 'b']
['d', 'a', 'b']
['d', 'a', 'b']

而不是我想要的,这将是:

['d','a','b']

以上是如何对数组进行排序并在Python中对其进行计数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>