这种方式将所有 A 加载到一个集合中以加快速度。如果您不将 A 加载到内存中,那么您必须将 A 的每一行与整个文件 B 进行比较。通过将 A 加载到内存中,您只需遍历每个文件一次。此外,由于 A 在内存中,因此检查 B 的第二列是否在 A 中会更快。
这是python中的一个示例:
#!/usr/bin/env python
def load_data(filename):
with open(filename, 'r') as infile:
Aset = set()
for line in infile:
word = line.strip()
if word == '':
continue
Aset.add(word)
return Aset
if __name__ == '__main__':
Aset = load_data('A')
with open('B', 'r') as infile:
for line in infile:
# Assumes that each line in B will have at least 2 columns.
# And that the column you are checking against is the last.
word = line.strip().split()[-1]
if word in Aset:
print line.strip()
如果机器没有足够的(空闲)内存来将所有文件 A 加载到集合中,这将不起作用。