Python 3:如何最快地比较两个大文件?

Python 3:如何最快地比较两个大文件?,python,json,hash,compare,Python,Json,Hash,Compare,在“Big_file.txt”中,我想提取“用户A”的UID,它不会与“Small_file.txt”中的UID重复。我写了以下代码,但它似乎永远不会停止运行。那么,如何加快这一进程呢?非常感谢:) 这是Big_file.txt的格式(有1000万行): 这是Small_file.txt的格式(有几百万行): 我期望的结果是: 111 222 在列表中查找项目需要O(n)时间。如果使用dict或set可以将其改进为O(1) 您可以做的最短修改是: linesB = [] for line in

“Big_file.txt”中,我想提取“用户A”的UID,它不会与“Small_file.txt”中的UID重复。我写了以下代码,但它似乎永远不会停止运行。那么,如何加快这一进程呢?非常感谢:)

这是Big_file.txt的格式(有1000万行):

这是Small_file.txt的格式(有几百万行):

我期望的结果是:

111
222

在列表中查找项目需要
O(n)
时间。如果使用
dict
set
可以将其改进为
O(1)

您可以做的最短修改是:

linesB = []
for line in open('E:/Small_file.txt'):
    line = json.loads(line)
    linesB.append(hash(line['uid']))
linesB = set(linesB)
还是要把它做好

linesB = set()
for line in open('E:/Small_file.txt'):
    line = json.loads(line)
    linesB.add(hash(line['uid']))

使用字典,您将大大加快
不在
中执行的查找速度。您可以使用
而不是
列表
来附加值,以跳过检查是否存在重复项。@spectras and vishes_shell非常感谢您的帮助:)在
集中
dict
中查找项具有平均复杂性O(1)。退房所以你的解决方案比你想象的还要好:)谢谢你的评论。我来自C++背景,我经常犯这个错误。C++中肯定有同样的错误,实际上,Cython解释器是用C编写的。他们只是选择了一个不同的实现,用于<代码> DICT<代码>,使用哈希表。它的主要优点是查找速度非常快,但在其他操作中显然需要付费,最明显的是在插入时出现“非常糟糕”的最坏情况。太棒了!目前,我的程序运行得非常快:D
111
222
linesB = []
for line in open('E:/Small_file.txt'):
    line = json.loads(line)
    linesB.append(hash(line['uid']))
linesB = set(linesB)
linesB = set()
for line in open('E:/Small_file.txt'):
    line = json.loads(line)
    linesB.add(hash(line['uid']))