问题是找到字符串中出现频率最高的字符。出现频率最高的字符必须是降序输出。在平局的情况下,即相同的出现,相同频率的字符必须按字母顺序输出。
例如:
s="aaccbba"
输出应该是
(('a',3),('b',2),('c',2))
并不是
(('a',3),('c',2),('b',2))
注意:您不应该使用控制流语句
我使用的python版本是2.7.5
我什至尝试使用计数器,但它没有帮助。
问题是找到字符串中出现频率最高的字符。出现频率最高的字符必须是降序输出。在平局的情况下,即相同的出现,相同频率的字符必须按字母顺序输出。
例如:
s="aaccbba"
输出应该是
(('a',3),('b',2),('c',2))
并不是
(('a',3),('c',2),('b',2))
注意:您不应该使用控制流语句
我使用的python版本是2.7.5
我什至尝试使用计数器,但它没有帮助。
>>> 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()
已经为您排序了它的项目,上面只是用稍微不同的标准再次排序了很多。