You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:03