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