首页 > 解决方案 > 列出子项中没有重复项

问题描述

我正在开发一个 python 脚本,该脚本从一个非常大的 html 文件中提取特定数据并将其写入 CSV。提取的数据是订单号、买家姓名和电子邮件地址。我不想包含任何包含重复人员的行,无论他们是否下了多个订单。

样本数据:

['10001', 'Tom', 'tom@example.com']
['10002', 'Jane', 'jane@example.com']
['10003', 'Bob', 'bob@example.com']

上面的三行已经在一个名为 orders 的列表中。然后我们遇到了这个信息:

number = '10004'
name = 'Jane'
email = 'jane@example.com'

基于电子邮件地址已在现有行中使用的事实,我不想将该行添加到列表中。

我的代码如下所示:

for order in orders:
    if [re.compile(r'+.'), re.compile(r'+.'), email] in rows: continue
    rows.append(number, name, email)

标签: python

解决方案


在处理列表时将所有姓名和电子邮件地址保存在集合中,并检查当前姓名或电子邮件是否在集合中。

names = set()
emails = set()

for number, name, email in order:
    if name in names or email in emails:
        continue
    names.add(name)
    emails.add(email)
    rows.append([number, name, email])

推荐阅读