-1

问题是找到字符串中出现频率最高的字符。出现频率最高的字符必须是降序输出。在平局的情况下,即相同的出现,相同频率的字符必须按字母顺序输出。

例如:

s="aaccbba"

输出应该是

(('a',3),('b',2),('c',2))

并不是

(('a',3),('c',2),('b',2))

注意:您不应该使用控制流语句

我使用的python版本是2.7.5

我什至尝试使用计数器,但它没有帮助。

4

1 回答 1

3

使用collections.Counter

>>> from collections import Counter
>>> Counter("aaccbba").most_common()
[('a', 3), ('c', 2), ('b', 2)]

输出可以排序:

>>> sorted(Counter("aaccbba").most_common(), key=lambda v: (-v[1], v[0]))
[('a', 3), ('b', 2), ('c', 2)]

b但实际上,首先列出或首先列出并没有真正的区别c;他们在其他方面是平等的。

对输出进行排序会起到双重作用;Counter()已经为您排序了它的项目,上面只是用稍微不同的标准再次排序了很多。

于 2013-05-29T07:43:10.907 回答