如何编写Python程序统计字符串中的字符出现频率?
字符串字符频率统计问题修正
原代码的问题
你的代码目前无法正确统计字符频率,核心问题有三个:
- 每次遍历字符时都在循环内重置
count = 0,导致无法累计计数,最终每个字符都输出0 - 没有针对每个字符去统计它在整个字符串中的出现次数,只是单次循环加1,完全没实现频率统计逻辑
- 会重复打印重复字符(比如字符串含重复字母时,会多次输出该字母的无效计数)
修正方案1:手动用字典统计
这是基础实现方式,适合理解统计逻辑:
def character_frequency(string): freq_dict = {} # 第一步:遍历字符串,统计每个字符的出现次数 for char in string: if char in freq_dict: freq_dict[char] += 1 else: freq_dict[char] = 1 # 第二步:遍历字典,打印每个字符的频率 result = [f"{char}: {count}" for char, count in freq_dict.items()] print(", ".join(result)) # 返回频率字典(可选,根据需求决定是否保留) return freq_dict # 调用函数 character_frequency("dortmund")
修正方案2:用Python内置工具Counter
Python的collections模块提供了Counter类,专门用来统计可哈希对象的频率,代码更简洁高效:
from collections import Counter def character_frequency(string): freq_counter = Counter(string) # 生成格式化后的字符串列表,再用逗号连接打印 result = [f"{char}: {count}" for char, count in freq_counter.items()] print(", ".join(result)) return freq_counter character_frequency("dortmund")
两种方案运行后都会输出整洁的结果:d: 2, o: 1, r: 1, t: 1, m: 1, u: 1, n: 1
内容的提问来源于stack exchange,提问作者Hamza Khatib
相关产品推荐
相关产品推荐

