如何不使用列表直接将文件中的单词转换为字典的键?
跳过中间列表,直接构建字典的几种方法
嘿,这个问题很好解决!你完全可以跳过中间存储单词的列表,直接在读取文件的过程中把单词作为字典的键,这样不仅代码更简洁,还能节省内存(处理大文件时优势更明显)。下面给你两种实用的实现方式:
方法一:逐行逐词构建字典
这种方式适合需要更直观控制流程的场景,读一行处理一行,逐个将单词加入字典:
def abc(f): word_dict = {} # 注意别用`dict`当变量名,会覆盖Python内置的dict类型 with open(f, "r") as file: for line in file: # 拆分当前行的单词,直接遍历每个单词 for word in line.strip().split(): word_dict[word] = "" return word_dict print(abc("file.txt"))
和你原来的代码效果完全一致,但省去了中间的lst列表,内存占用更低。
方法二:用字典推导式简化代码
如果你喜欢更简洁的写法,字典推导式可以一行完成核心逻辑,同样不需要中间列表:
def abc(f): with open(f, "r") as file: # 嵌套生成器遍历所有单词,直接生成目标字典 return {word: "" for line in file for word in line.strip().split()} print(abc("file.txt"))
这里的嵌套生成器会先遍历文件的每一行,再遍历每行拆分后的单词,直接构建键为单词、值为空字符串的字典,非常高效。
补充说明:两种方法都保留了你原有的逻辑——如果文件里有重复单词,后面的会覆盖前面的(因为字典的键具有唯一性),和你原来通过列表转字典的结果完全一致。
内容的提问来源于stack exchange,提问作者Pargrammisa
相关产品推荐
相关产品推荐

