如何将每行单单词的文件转换为按词长分组的字典?
问题分析与解决
错误根源
- 文件指针耗尽:调用
file.readlines()后,文件指针已移动到文件末尾,后续for line in file不会读取任何内容。 - 错误的解包逻辑:你的文件每行仅含单个单词,
line.split()只会返回单元素列表,强行解包成(key, val)必然触发“值解包不足”错误。 - 逻辑偏离需求:你试图拆分每行内容为键值对,但实际需求是按单词长度分组,键为长度,值为同长度单词的列表。
修正后的代码
with open(dictionary_file, 'r') as file: # 读取所有行并去除换行符,生成干净的单词列表 wordlist = [line.rstrip('\n') for line in file.readlines()] dictionary = {} for word in wordlist: length = len(word) # 若长度未作为键存在,先初始化空列表 if length not in dictionary: dictionary[length] = [] # 将单词添加到对应长度的列表中 dictionary[length].append(word) print(dictionary)
代码说明
- 先一次性读取所有行并处理换行符,得到完整的单词列表。
- 遍历每个单词,以单词长度为键:
- 若该长度未在字典中,先创建空列表作为对应值。
- 将当前单词追加到对应长度的列表内。
- 最终生成的字典即为按单词长度分组的目标结果。
内容的提问来源于stack exchange,提问作者Elaine Pargo
相关产品推荐
相关产品推荐

