from cppy.cp_util import * def extract_words(obj, path_to_file): """ 从文件中提取单词并存储在对象的 'data' 字段中。 Args: obj (dict): 存储数据的字典对象。 path_to_file (str): 文件路径。 """ obj['data'] = extract_file_words(path_to_file) def increment_count(obj, w): """ 增加单词的计数。如果单词不存在,则将其计数设置为1。 参数: obj (dict): 存储单词频率的字典对象。 w (str): 单词。 """ obj['freqs'][w] = 1 if w not in obj['freqs'] else obj['freqs'][w] + 1 # 数据存储对象,包含初始化和获取单词的方法 data_storage_obj = { 'data': [], # 存储单词列表 'init': lambda path_to_file: extract_words(data_storage_obj, path_to_file ), # 初始化方法,提取文件中的单词 'words': lambda: data_storage_obj['data'] # 获取单词列表的方法 } # 单词频率对象,包含增加计数和排序的方法 word_freqs_obj = { 'freqs': {}, # 存储单词频率的字典 'increment_count': lambda w: increment_count(word_freqs_obj, w), # 增加单词计数的方法 'sorted': lambda: sort_dict(word_freqs_obj['freqs']) # 获取排序后的单词频率的方法 } if __name__ == '__main__': # 初始化数据存储对象,提取文件中的单词 data_storage_obj['init'](testfilepath) # 遍历单词列表,增加单词的计数 for word in data_storage_obj['words'](): word_freqs_obj['increment_count'](word) # 获取排序后的单词频率并打印 word_freqs = word_freqs_obj['sorted']() print_word_freqs(word_freqs)