如何将文本文件每行后两列内容合并为单个集合?
解决方法:正确累积每行结果生成目标集合
你现在的代码只返回最后一行的结果,核心问题是没有把每行处理后的内容累积起来,反而每次循环都重置了临时变量,最后自然只剩最后一行的数据。咱们来一步步修正:
原代码的问题拆解
temp_List初始化后完全没被使用,一直是空的- 每次循环里
master_set = [" ".join(splitLine[1:])]都是创建一个只包含当前行结果的新列表,没有和之前的内容合并 temp_Set = set(temp_List)基于空列表生成,最后只保留了最后一次循环的输出(如果缩进在循环里的话)
修正后的代码(两种实现方式)
方式1:直接用集合逐行添加元素
这种方式最直接,不需要先存列表:
master_set = set() with open('temp.txt', 'r') as f: for line in f: # 先去掉每行末尾的换行符,再按空格分割 split_line = line.strip().split() # 把第2个元素到结尾的部分拼接成字符串,加入集合 master_set.add(" ".join(split_line[1:])) print(master_set) # 输出: {'susan python', 'rick java', 'bella scala'}
方式2:先存列表再转集合
如果需要先保留行的顺序(集合是无序的,列表是有序的),可以先收集到列表再转换:
temp_list = [] with open('temp.txt', 'r') as f: for line in f: split_line = line.strip().split() temp_list.append(" ".join(split_line[1:])) master_set = set(temp_list) print(master_set)
关键优化点
- 把集合/列表的初始化放在循环外面,避免每次循环都重置变量
- 使用
add()给集合加元素,或append()给列表加元素,实现结果累积 - 用
strip()处理换行符,避免拼接后的字符串带多余的换行符(更严谨)
内容的提问来源于stack exchange,提问作者TanviP
相关产品推荐
相关产品推荐

