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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:18:00