Python不导入库实现从二维列表中搜索含指定关键词的子列表并输出
问题解决方法
卡住位置的代码补全
你卡在输出匹配子列表的位置,直接遍历已经生成的CleanData二维列表,匹配姓名对应的子项即可,把print(?)替换为以下代码:
for record in CleanData: # 子列表第一个元素为姓名,匹配输入的搜索词 if record[0] == name: print(f"found, {record[0]} {record[1]}") # 匹配到后直接终止遍历,避免不必要的循环 break
现有代码的问题优化
你当前写的代码存在几个逻辑错误,运行会报错,建议调整为以下完整可运行版本,全程没有引入第三方库,符合你的需求:
def searchName(): # 一次读取文件并解析为二维列表,避免重复IO操作 clean_data = [] with open("namelist.txt", "r", encoding="utf-8") as f: for record in f: stripped = record.strip() # 跳过空行 if not stripped: continue record_list = stripped.split("\t") clean_data.append(record_list) name = input("Enter name: ") found = False for item in clean_data: if item[0] == name: print(f"found, {item[0]} {item[1]}") found = True break if not found: print("User not found") return found # 调用函数执行搜索 searchName()
逻辑说明
- 全程只读取一次文件,解析为结构化的二维列表后再做匹配,性能更高
- 避免了
name in datafile的模糊匹配问题,比如年龄字段包含姓名对应字符的情况下不会出现误判 - 匹配到目标姓名后直接终止遍历,适合大体积二维列表的搜索场景
内容的提问来源于stack exchange,提问作者Darren LK
相关产品推荐
相关产品推荐

