搜索列表数组并检查其中一个值是否不存在

时间:2018-12-21 06:25:30

标签: python

我正在使用BeautifulSoup提取标记为=的所有标记,以邮寄到。我正在自己的网站上运行它。我唯一的问题是让我说过两次电子邮件。我只希望它一次将其存储到数组中。通过该商店,我还存储了url的路径。现在将其保持简单,并使其只是一个“ /”。

我需要一种方法来遍历每个元素,找到“ url”并检查值。如果不存在,请将其添加到数组中。

这里是我得到的,但这是不正确的。

def remove_duplicates(arr):

    final_list = []

    for page, data in enumerate(arr):
        if not final_list:
            final_list.append({'page': '/', 'url': data["url"]})
        print(final_list)


pageData = urllib.request.urlopen('<anysite>').read()

soup = BeautifulSoup(pageData, 'html.parser')
initialData = []
data = []
for i in soup.find_all("a", href=lambda href: href and "mailto" in href):
    initialData.append({'page': '/', 'url': i.text})


remove_duplicates(initialData)

1 个答案:

答案 0 :(得分:0)

如果“我唯一的问题”是我已经提到我的电子邮件两次。我只希望它一次将它存储到数组中。 然后,我建议您设置要设置的列表,然后再使其返回列表。这样可以消除重复的数据。

k = ['hello','world','hello']
set(k)
{'hello', 'world'}
list(set(k))
['hello', 'world']

要检查列表中是否存在值,可以使用not in关键字。

示例:

ls = [{'google': 'www.google.com'},{'facebuk': 'www.facebuk.com'},{ 'sample': 'www.sample.com'}, { 'sample': 'www.sample.com'}]

现在您可以执行此操作以删除重复项。

>>> [dict(t) for t in {tuple(d.items()) for d in ls}]
[{'google': 'www.google.com'}, {'sample': 'www.sample.com'}, {'facebuk': 'www.facebuk.com'}]

希望有帮助。