📅  最后修改于: 2023-12-03 15:12:42.376000             🧑  作者: Mango
这是一道典型的算法题目,需要使用哈希表来记录每一个字符串出现的频次。在我们开始编写程序之前,我们需要进行的准备工作如下:
接下来是程序的具体实现:
import collections
# 读取文件并返回所有的字符串
def read_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
words = []
for line in lines:
# 移除行末的换行符
line = line.rstrip()
# 使用空格分割每一行
line_words = line.split(' ')
# 添加到单词列表
words.extend(line_words)
return words
# 统计单词出现频次
def count_words(words):
counter = collections.Counter(words)
return counter
# 打印出现频次最高的10个单词
def print_top_10_words(counter):
# 将结果按出现频次降序排序
sorted_words = sorted(counter.items(), key=lambda x: x[1], reverse=True)
# 打印最高的10个单词
for word, count in sorted_words[:10]:
print(f'{word}: {count}')
# 主函数
def main():
file_path = 'path/to/file.txt'
words = read_file(file_path)
counter = count_words(words)
print_top_10_words(counter)
if __name__ == '__main__':
main()
上述代码中,我们使用了 collections
模块中的 Counter
类来完成字符串的频次计数,这个类可以直接对列表、字符串等序列进行计数,非常方便。我们还定义了三个函数 read_file
、count_words
和 print_top_10_words
,分别用于读取文件,统计单词出现频次以及输出出现频次最高的前10个单词。最后在 main
函数中调用这些函数就可以实现相应的功能。
需要注意的是,程序中的 file_path
需要根据具体情况修改为实际的文件路径。此外,在输出结果时也可以根据需求进行相应的调整,比如改为输出前20个单词等等。