Python统计字符频率后,如何筛选重复超2次的字符并按每行5个格式输出
过滤与排版实现方案
核心实现思路
- 结果过滤:现有统计逻辑已经完成了字符出现次数的降序排序,不需要改动前面的统计流程,只要在拿到
frequency列表后,筛选出所有出现次数大于2的字符即可,用列表推导式几行就能写完。 - 排版处理:把过滤好的字符列表按每5个一组切分,逐行拼接输出,就能实现每行5个的排版要求。
- 代码避坑提示:原实现用
str、dict当变量名,这两个都是Python的内置类型,这么写会覆盖原有内置对象的作用,后续如果做字符串、字典相关操作很容易出现莫名报错,建议换成自定义的变量名比如cleaned_str、char_count。
完整可运行代码
import re sentence = "Xin chao Python! Python rat thu vi! Toi rat thich no-P" # 移除特殊字符 cleaned_str = re.sub('\W+','', sentence ) frequency = [] char_count = {} for i in set(cleaned_str): count = cleaned_str.count(i, 0, len(cleaned_str)) char_count[i] = count for i in sorted(char_count, key=char_count.get, reverse=True): frequency.append((i, char_count[i])) # 筛选出现次数超过2次的字符 filtered_chars = [char for char, cnt in frequency if cnt > 2] # 按每行5个字符排版输出 for row_start in range(0, len(filtered_chars), 5): print(''.join(filtered_chars[row_start:row_start+5]))
运行效果
代码执行后输出内容为:
htoin Pa
说明:结合你之前跑出来的统计结果,满足出现次数>2的字符一共7个,按排序顺序依次为h、t、o、i、n、P、a,因此第一行输出前5个字符,第二行输出剩余的2个字符。
内容的提问来源于stack exchange,提问作者Luong
相关产品推荐
相关产品推荐

