gpt4 book ai didi

python 比较两个大列表并处理一个

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:43 24 4
gpt4 key购买 nike

我有两个文本文件。在a.txt中,有这样的行(一百万行):

991000000019999998,b10000021,
991000000019703408,b10000021,
991000545455435408,b10000045,
991000000029703408,b10000045,
...

第一部分是条形码(991000000019703408),第二部分是bib_number(b10000021)。请注意,每行中的 bib_number 可能是重复的。但条形码是唯一的。所以我认为使用 Set() 是不行的。在另一个文件b.txt中,只有bib_number(60万条记录)的信息:

b10000021
b10000045
b10000215
...

现在我必须比较a.txt中的两个文件,如果每行的bib_number(如b10000045)不在b.txt中,则整行需要输出到c.txt,如(991000000029703408,b10000045,)

我是这样写代码的,但是直到20分钟我才得到结果。

with open("a.txt", "r") as f1,open("b.txt", "r") as f2,open("c.txt","w") as f3: 
total_bb=f1.readlines()
list_match=f2.readlines()
for item_bb in total_bb:
recordList=re.split(",",item_bb)
item_bb_w=(recordList[1])+'\n'
if item_bb_w not in list_match:
f3.write(item_bb)

有什么技巧可以比较这两个大列表吗?谢谢

最佳答案

使用set,查找时间为O(1):

with open("a.txt", "r") as f1,open("b.txt", "r") as f2,open("c.txt","w") as f3:
bs = set(b.strip() for b in f2)
for a in f1:
x = a.split(',')
if x[1].strip() not in bs:
f3.write(a)

我还会查看 csv 模块来读取逗号分隔值。

关于python 比较两个大列表并处理一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com