在“Big_file.txt”,我想提取“用户A”这是不符合在“Small_file.txt”的UID重复的UID的。我写了下面的代码,但它似乎永远不会停止运行。那么,如何加快这个过程呢?非常感谢你:)Python 3:如何比较两个大文件最快?
import json
uid_available = []
linesB = []
for line in open('E:/Small_file.txt'):
line = json.loads(line)
linesB.append(hash(line['uid']))
for line in open('E:/Big_file.txt'):
line = json.loads(line)
if hash(line['uid']) not in linesB and line['user'] == 'User A':
uid_available.append(line['uid'])
这是Big_file.txt的格式(有10个百万行):
{'uid': 111, 'user': 'User A'}
{'uid': 222, 'user': 'User A'}
{'uid': 333, 'user': 'User A'}
{'uid': 444, 'user': 'User B'}
{'uid': 555, 'user': 'User C'}
{'uid': 666, 'user': 'User C'}
这是Small_file.txt的格式(有几百万行):
{'uid': 333, 'user': 'User A'}
{'uid': 444, 'user': 'User B'}
{'uid': 555, 'user': 'User C'}
输出我预计:
111
222
使用一本字典,你会显著加快由执行查找'不in'。 – spectras
您可以使用'set'而不是'list'来附加值来跳过检查是否有重复项。 –
@spectras和vishes_shell非常感谢您的帮助:) – NGuyen