Python从句子列表生成单词索引字典时数据被重置如何解决
问题分析
你的代码存在以下几处核心错误,导致最终结果不符合预期:
- 没有对
index_dict做实际的写入操作,每次生成的list_of_occurences都是局部临时变量,没有关联到字典的对应键 - 每次处理单词时都重新初始化
list_of_occurences,没有复用该单词之前已经存储的下标列表,导致历史索引记录被覆盖 - 用
in直接判断单词是否在句子字符串中会出现误匹配(比如搜索a会匹配到所有带a的单词),正确做法是先把句子按空格切分为独立单词再判断 - 双重循环逻辑冗余,不需要每次都遍历全量单词列表,处理每行时直接遍历当前行的单词即可
修正后的实现代码
# 示例输入 sentences = ['writefile file txt', 'Hello IDSD Good morning How', 'This first exercice', 'This second exercice TP Hello easy exercice'] index_dict = {} # 遍历每个句子,同时获取对应下标 for idx, sentence in enumerate(sentences): # 把句子切分为单词后去重,避免同一行多次出现同一个单词时重复添加下标 words = set(sentence.split()) for word in words: # 如果单词不在字典中,先初始化空列表存储下标 if word not in index_dict: index_dict[word] = [] # 将当前句子下标追加到对应单词的列表中 index_dict[word].append(idx) print(index_dict)
代码运行输出和你要求的预期结果一致:{'writefile': [0], 'file': [0], 'txt': [0], 'Hello': [1, 3], 'IDSD': [1], 'Good': [1], 'morning': [1], 'How': [1], 'This': [2, 3], 'first': [2], 'exercice': [2, 3], 'second': [3], 'TP': [3], 'easy': [3]}
内容的提问来源于stack exchange,提问作者MikeWazowski
相关产品推荐
相关产品推荐

