2017-04-18 82 views
2

Python集合Counter.most_common(n)方法返回前n个元素及其计数。但是,如果两个元素的计数相同,如何返回按字母顺序排序的结果?按字母顺序排列具有相同计数的元素 - Python计数器

例如:像一个字符串:BBBAAACCD,对于 “两最常见的” 元素,我希望得到的结果是:

[('A', 3), ('B', 3), ('C', 2)] 

和NOT:

[('B', 3), ('A', 3), ('C', 2)] 

注意尽管AB具有相同的频率,但A在结果列表中出现在B之前,因为它以字母顺序出现在B之前。

[('A', 3), ('B', 3), ('C', 2)] 

我该如何做到这一点?

+0

http://stackoverflow.com/questions/20950650/how-to-sort-counter-by-value-python –

+1

可能的复制[如何按价值排序计数器? - 蟒蛇](http://stackoverflow.com/questions/20950650/how-to-sort-counter-by-value-python) – justderb

+0

@HarshaW不,它不是重复的。我刚刚更新了我的问题,以澄清我试图达到的目标。请回顾并让我知道你是否有一些想法。 – stfd1123581321

回答

0
from collections import Counter 
print(sorted(Counter('AAABBBCCD').most_common(3))) 

这个问题似乎是重复 How to sort Counter by value? - python

+0

这不起作用。如果你使'A'不是最常见的,它会解除most_common并按字母顺序返回。 – AgentBawls