Python使用Counter统计数组频次后如何按降序逐行打印结果
解决方法
你可以直接使用Counter自带的most_common()方法实现需求,该方法会默认返回按频次从高到低排序的(元素, 出现次数)元组列表,直接遍历该列表打印即可,不需要手动处理key的索引转换。
完整代码示例
from collections import Counter # 你的颜色数组 mass = ['white','black','white', 'black', 'black', 'sky blue'] mass_count = Counter(mass) # 按频次降序逐行打印 for color, count in mass_count.most_common(): # 调用title()方法实现首字母大写,匹配你需要的输出格式 print(f"{color.title()}: {count}")
原代码排序异常的原因
如果你使用的是Python 3.7以下的版本,原生字典不保留插入顺序,直接遍历Counter的key会出现乱序;就算是3.7以上保留插入顺序的版本,你的原有写法做了多次多余的列表转换,也容易出现索引匹配错误导致顺序异常。使用most_common()是Counter官方提供的标准排序取值方案,兼容性和稳定性更高。
内容的提问来源于stack exchange,提问作者Алекс
相关产品推荐
相关产品推荐

