如何从词频统计字典中获取最长单词、长度及最常见单词?
问题解决:字典中最长单词与高频单词提取
给定文本:
['To be or not to be,', 'that is the question.']
已处理为词频统计字典hamlet_dict,需实现两个功能:
- 获取字典中最长单词及其长度
- 获取最常见单词及其出现次数
以下是针对现有代码问题的修正方案:
一、获取最长单词及长度
原问题分析
原代码仅计算出最长单词的长度,但未将对应单词存入longest列表,导致输出为空列表。
修正代码
length = 0 longest = [] for k in hamlet_dict.keys(): current_len = len(k) if current_len > length: # 找到更长的单词,重置长度和列表 length = current_len longest = [k] elif current_len == length: # 遇到长度相同的单词,加入列表 longest.append(k) # 格式化输出 print(f'There are {length} characters in the longest word. The word is {", ".join(longest)}.')
说明
遍历字典键时同步判断单词长度:若大于已记录的最长长度,则更新长度并重置列表;若等于最长长度,则将单词加入列表。用", ".join(longest)处理多最长单词的情况,输出更符合预期格式。
二、获取最常见单词及出现次数
原问题分析
原代码仅找到最高出现次数,但未遍历键值对匹配对应单词,导致common列表为空。
修正代码
common = [] count = 0 for word, freq in hamlet_dict.items(): if freq > count: # 找到更高频次,更新次数并重置列表 count = freq common = [word] elif freq == count: # 遇到相同频次的单词,加入列表 common.append(word) # 格式化输出 print(f'{", ".join(common)} is the most common word(s). It showed up {count} times.')
说明
直接遍历字典的键值对(items()方法),同时判断频次:若大于当前最高频次,则更新频次并重置列表;若等于最高频次,则将单词加入列表。用", ".join(common)处理多高频单词的场景,输出符合预期格式。
内容的提问来源于stack exchange,提问作者prina sikowitz
相关产品推荐
相关产品推荐

