小编Mic*_*l B的帖子

Counter.most_common(n)如何覆盖任意顺序

我可以完成秩/排序使用Counter.most_common()的功能,从而避免了这一行:d = sorted(d.items(), key=lambda x: (-x[1],x[0]), reverse=False)??

挑战: 给您一个字符串。该字符串仅包含小写英文字母字符。您的任务是查找字符串中最常见的前三个字符。

输出格式: 将三个最常见的字符及其出现次数打印在单独的行上。按出现次数降序对输出进行排序。如果出现次数相同,请按升序对字符进行排序。

在完成此操作时,我使用了dict,Counter和sort以确保“出现次数相同,以升序对字符进行排序”。内置的Python sorted功能可确保先按计数再按字母顺序排序。我很好奇是否有一种方法可以覆盖Counter.most_common()默认的任意排序/顺序逻辑,因为在选择前3个时似乎无视结果的字典顺序。

import sys
from collections import Counter

string = sys.stdin.readline().strip()
d = dict(Counter(string).most_common(3))
d = sorted(d.items(), key=lambda x: (-x[1],x[0]), reverse=False)

for letter, count in d[:3]:
    print letter, count
Run Code Online (Sandbox Code Playgroud)

python counter python-2.7

5
推荐指数
1
解决办法
725
查看次数

标签 统计

counter ×1

python ×1

python-2.7 ×1