Python字符串字母出现次数统计:如何避免重复统计同一字母?
解决Python统计单词字母出现次数去重问题
问题描述
我编写了如下Python代码,试图统计单词'monsoon'中每个字母的出现次数并返回结果列表:
word = 'monsoon' def check(x): emptyList = [] search = list(word) for element in x: count_elements = str(search.count(element)) emptyList += count_elements print(emptyList) check(word)当前代码输出为
['1', '3', '2', '1', '3', '3', '2'],但我希望避免重复统计同一字母,得到['1', '3', '2', '1']这样的结果,请问该如何修改代码?
修改方案
方案一:基于有序去重集合遍历
利用dict.fromkeys()实现有序去重(保留字母在原单词中首次出现的顺序),遍历去重后的字母列表统计次数:
word = 'monsoon' def check(x): emptyList = [] # 获取无重复且保持首次出现顺序的字母列表 unique_chars = list(dict.fromkeys(x)) for element in unique_chars: count_elements = str(x.count(element)) emptyList.append(count_elements) print(emptyList) check(word)
执行后输出:['1', '3', '2', '1'],符合需求。
方案二:用列表标记已处理字母
遍历原单词时,用额外列表记录已统计过的字母,避免重复处理:
word = 'monsoon' def check(x): emptyList = [] processed_chars = [] for element in x: if element not in processed_chars: count_elements = str(x.count(element)) emptyList.append(count_elements) processed_chars.append(element) print(emptyList) check(word)
这种方式同样能得到目标结果,逻辑直观,适合理解基础遍历和去重逻辑。
内容的提问来源于stack exchange,提问作者ej001
相关产品推荐
相关产品推荐

