Python使用Counter统计高频字符时相同频次按ASCII升序排序方法
Counter自定义排序实现方案
- 核心原理:
Counter的most_common()方法仅默认按频次降序排序,同频次字符的顺序无法满足ASCII升序要求,因此需要基于sorted()函数自定义排序规则 - 排序逻辑设计:
- 第一优先级:按字符频次降序排列,通过对频次取负值,利用
sorted()默认升序的特性实现反向排序 - 第二优先级:同频字符按ASCII值升序排列,直接使用字符本身作为排序依据即可,Python中字符排序默认基于ASCII码值
- 第一优先级:按字符频次降序排列,通过对频次取负值,利用
可直接运行的代码示例
from collections import Counter # 输入原始字符串 input_str = 'bbbbcccaaaggggggghhhhhhhh' # 统计字符出现频率 char_freq = Counter(input_str) # 按自定义规则排序后取前5个结果 result = sorted(char_freq.items(), key=lambda item: (-item[1], item[0]))[:5] print(result)
输出结果
运行后得到期望输出:[('h', 8), ('g', 7), ('b', 4), ('a', 3), ('c', 3)]
内容的提问来源于stack exchange,提问作者Loopedfrog4
相关产品推荐
相关产品推荐

