Python读取txt词表如何实现内容查索引、输入索引查对应内容
实现词表双向检索功能
你原有代码存在两层冗余循环的问题,且没有持久化存储索引与内容的映射关系,无法支撑后续检索需求。由于10k条词表数据量极小,我们可以先把全量数据加载到内存中构建双向映射,查询效率可以做到O(1)。
完整实现代码
# 1. 加载词表构建双向映射 index_to_word = {} word_to_index = {} wordlist_path = r'C:\Users\islam\Desktop\10k most passwords.txt' # 使用with上下文管理器自动关闭文件,避免资源泄漏 with open(wordlist_path, 'r', encoding='utf-8') as f: for index, line in enumerate(f, 1): # 如果你不需要保留每行末尾的换行符,可以替换为 line = line.rstrip('\n') index_to_word[index] = line # 如果存在重复密码,当前逻辑会保留最后出现的那条的索引,需要保留全部可把value改为列表存储 word_to_index[line] = index # 2. 功能1:输入内容查询对应索引 def query_index_by_content(content): return word_to_index.get(content, "未找到匹配的内容") # 3. 功能2:输入索引查询对应条目 def query_content_by_index(index): if index in index_to_word: return [index, index_to_word[index]] return "未找到匹配的索引" # 测试示例 if __name__ == "__main__": # 测试按索引查询 print(query_content_by_index(9995)) # 输出示例:[9995, 'eighty\n'] # 测试按内容查索引 print(query_index_by_content('eighty\n')) # 输出示例:9995
可选优化点
- 如果查询时不想输入换行符匹配,加载数据时用
line = line.rstrip('\n')处理每行内容即可 - 如果词表存在重复内容,可将
word_to_index的value改为列表存储所有对应索引,避免旧索引被覆盖
内容的提问来源于stack exchange,提问作者Islam hamdy
相关产品推荐
相关产品推荐

