def cross(listMaster, listSlave, criteria="email"):
if criteria == "email":
emailListSlave = []
returnUnique = []
for item in listSlave:
emailListSlave.append(item[2]) #appends emails
for no,item in enumerate(listMaster):
if no % 10000 == 0:
print("Status: {percent:.2f} %".format(percent=(no/len(listMaster))))
if item[2] not in emailListSlave:
returnUnique.append(item)
return returnUnique
我有 2 个列表:listMaster 和 listSlave。这两个列表都有大约 2,000,000 个项目,其中包含大约 24 个项目。我的目标是按列表中的第三个元素(恰好是电子邮件)对列表进行“排序”。然后我想在主从列表之间找到唯一的电子邮件。因此,如果从列表在主列表中存在电子邮件,则丢弃该项目并继续。
我的算法:
1) 将 Slave 列表 (email) 中每一项的第 3 个元素加载到新列表 (emailListSlave) 中
2)遍历MasterList,检查MasterList中每一项的第三个元素是否在emailListSlave中
3) 如果 2 为 True,则继续,如果为 false,则附加 returnUnique 列表,其中包含仅在 listMaster 中找到的唯一电子邮件
运行这个非常慢。我设法在大约 20 分钟内完成了 10%。我可以用 iter 加速这个过程吗?迭代工具?请帮我优化这段代码。
肥皂起泡泡
胡子哥哥
相关分类