代码执行结果异常:文本中字母出现次数统计不符合预期
修复字母计数代码中每个字符仅统计1次的问题
你的代码逻辑存在问题:只有当字符第一次出现时才会进入if分支,执行result[letter]=0和result[letter]+=1(最终值为1),但后续重复出现的同一字符不会触发if条件,也就不会执行累加操作,导致所有字符的计数都是1。
下面是几种可行的修复方案:
方案1:调整原逻辑,确保每次出现都累加
把累加操作移到if分支外面,这样无论字符是否第一次出现,都会执行计数累加:
def count_letters(text): result = {} for letter in text: if letter not in result: result[letter] = 0 result[letter] += 1 return result count_letters("aaad g a") # 返回 {'a':4, 'd':1, ' ':2, 'g':1}
方案2:用dict.get()简化判断
利用字典的get()方法,直接获取字符当前计数(不存在则返回默认值0),再进行累加,省去if判断:
def count_letters(text): result = {} for letter in text: result[letter] = result.get(letter, 0) + 1 return result
方案3:使用Python内置collections.Counter
Python标准库的collections.Counter专门用于统计可哈希对象的出现次数,代码更简洁高效:
from collections import Counter def count_letters(text): return dict(Counter(text))
执行上述任意一种方案,都能得到你预期的结果:字母a计数为4,d为1,空格为2,g为1。
内容的提问来源于stack exchange,提问作者user21937031
相关产品推荐
相关产品推荐

