Python字符串词频统计代码求助:重复输出词频如何解决
解决单词频率重复输出的问题
嗨,我懂你的困扰啦——现在你的代码会把重复出现的单词连着打印好几次,确实有点多余。咱们可以用几种简单的方法来fix这个问题,而且还能让代码更高效:
方法1:用集合去重(简单直接)
集合的特性就是里面的元素都是唯一的,所以我们可以先把拆分后的单词列表转成集合,这样每个单词只会出现一次,再遍历集合统计次数就行:
string = input("Enter your string: ") words = string.split() # 遍历去重后的单词集合 for word in set(words): print(f"{word} = {words.count(word)}")
不过要注意,集合是无序的,所以输出的单词顺序可能和原字符串里的顺序不一样哦。
方法2:用字典统计(高效且可保留顺序)
这种方法是遍历单词列表,把每个单词作为字典的键,出现次数作为对应的值,统计完成后再统一输出,不仅不会重复,效率也更高(不用每次都遍历整个列表去count):
string = input("Enter your string: ") words = string.split() frequency_dict = {} for word in words: if word in frequency_dict: frequency_dict[word] += 1 else: frequency_dict[word] = 1 # 遍历字典输出结果 for word, count in frequency_dict.items(): print(f"{word} = {count}")
在Python 3.7及以上版本,字典默认会记住元素的插入顺序,所以输出的顺序就是单词第一次出现的顺序,完美匹配你的输入顺序~
方法3:用标准库Counter(最简洁)
Python的collections模块里有个专门的Counter类,就是用来统计元素频率的,一行代码就能完成统计,非常省心:
from collections import Counter string = input("Enter your string: ") words = string.split() word_frequency = Counter(words) for word, count in word_frequency.items(): print(f"{word} = {count}")
Counter不仅简洁,还自带很多实用的方法,比如找出现次数最多的单词之类的,如果你之后有扩展需求也很方便。
这几种方法都能解决你的重复输出问题,你可以根据自己的需求选一个用哦~
内容的提问来源于stack exchange,提问作者Viqtoh
相关产品推荐
相关产品推荐

