如何编写Python程序接收字符串列表,返回对应单词索引字典
倒排索引函数实现
完整可运行代码
def reverse_index(dataset): result = {} # 遍历每个字符串的索引与内容 for idx, content in enumerate(dataset): # 统一转为小写后按空格拆分单词 words = content.lower().split() # 去重当前行单词,避免同一行重复添加索引 unique_words = set(words) for word in unique_words: # 单词首次出现时初始化空列表 if word not in result: result[word] = [] result[word].append(idx) return result
代码逻辑说明
- 用
enumerate遍历输入列表,同时获取字符串的位置索引和文本内容,无需手动维护索引计数 - 调用
lower()方法将整段文本转为小写,满足「Hello和hello视为同一单词」的大小写不敏感要求 - 用
split()按空格拆分得到单词列表,转set去重是为了符合常规倒排索引的文档级统计规则(同一字符串内单词多次出现仅记录一次索引)
备注:如果需求要求统计同一字符串内单词的多次出现(即同一字符串中出现N次单词,索引列表就追加N次对应索引),只需删除去重步骤,直接遍历拆分后的
words列表即可
测试验证
用提供的测试用例验证,可直接运行通过:
dataset = [ "Hello world", "This is the WORLD", "hello again" ] res = reverse_index(dataset) # 校验结果符合预期 assert res == { 'hello': [0, 2], 'world': [0, 1], 'this': [1], 'is': [1], 'the': [1], 'again':[2] } print("测试通过")
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

