Python 如何消除for循环中的重复

Python 如何消除for循环中的重复,python,for-loop,iteration,Python,For Loop,Iteration,我怎样才能避免重复?如果我理解正确,你想打印副本 您可以这样做: for line in file2.splitlines(): for l in file1.splitlines(): if line in l: print l 但是,如果希望以更好的方式执行,请使用集合: print [line for line in file2.splitlines() if line in file1.splitlines()] 用第二个文件中的行创建字典将是一个更快的解决方案

我怎样才能避免重复?

如果我理解正确,你想打印副本

您可以这样做:

for line in file2.splitlines():
  for l in file1.splitlines():
    if line in l:
     print l
但是,如果希望以更好的方式执行,请使用集合:

print [line for line in file2.splitlines() if line in file1.splitlines()]

用第二个文件中的行创建字典将是一个更快的解决方案,它也将消除重复项:

print list(file2.splitlines() & file1.splitlines())

嗯,你刚才是不是又问了一次为什么要贴两次?公平地说,一个15小时前没有投票的问题不太可能得到新的答案。不过,如果第一个问题至少先被删除就好了,或者可以对其进行编辑和改进,使其回到列表的最前面。您的代码可能不符合您的要求;当您读取外部循环中的第一行时,内部循环读取file2中的所有数据;下一次通过循环时,内部循环什么也不做(没有留下要读取的行)。你需要再想一想。我为这个重复的问题道歉,但我是这个论坛的新手,我以前没有这方面的经验。我试图删除第一个,但很难,因为它有答案。第一个代码片段不是在
行的每次迭代中调用
file1.splitlines()
?我尝试了这个,但是没有result@5555555555你有错误吗?没有,但没有result@5555555555希望您正在打开有问题的两个文件?更新了我的答案,只有当我在第二个文件中使用for循环时,它才起作用,但这会造成重复
from collections import defaultdict

second_file = open('second.txt')
second_file_dict = defaultdict(int)
first_file_dict = defaultdict(int)

for line in second_file:
    second_file_dict[line.strip()] += 1
second_file.close()

first_file = open('first.txt')
for line in first_file:
    if line in second_file_dict and not in first_file_dict:
        print line
    first_file_dict[line.strip()] += 1        
first_file.close()