使用字典去重:Python重复项种类统计函数Bug排查求助
问题排查与修复
原代码存在的Bug
- 重复计数逻辑错误:第二个循环遍历原文本的每个字符,只要字符出现次数>1就累加计数,导致重复字符每出现一次就加1(比如某字符出现4次,会累加4次),而非统计重复的字符种类数。
- 空文本判断无效:
len(text) != ""是整数与字符串比较,永远为False,空文本会进入else分支,但判断逻辑完全错误。 - 返回类型不统一:
else分支返回字符串"0",正常情况返回整数,类型不一致。
修复后的代码
def duplicate_count(text): text = text.lower() count_dict = {} # 统计每个字符的出现次数 for char in text: count_dict[char] = count_dict.get(char, 0) + 1 # 统计出现次数≥2的字符种类数 duplicate_types = 0 for count in count_dict.values(): if count > 1: duplicate_types += 1 return duplicate_types
修复说明
- 替换第二个循环:改为遍历统计字典的
values(),每个字符只检查一次,确保统计的是重复的字符种类数而非总重复次数。 - 移除无效判断:空文本时
count_dict为空,遍历后duplicate_types自然为0,无需额外判断。 - 修正变量名:将
dict改为count_dict,避免覆盖Python内置的dict类型。 - 统一返回类型:所有情况均返回整数,保证函数逻辑一致性。
测试验证
- 输入
"aaaa"→ 返回1(正确统计1种重复字符) - 输入
"aabbcc"→ 返回3(正确统计3种重复字符) - 输入
""→ 返回0(空文本无重复)
内容的提问来源于stack exchange,提问作者Zuzanna
相关产品推荐
相关产品推荐

