Python(2.7)队列重复
我正在尝试为一个简单的web爬虫创建一个包含url字符串的队列。我不想将重复的项目添加到队列中,因此我创建了一个helper函数来检查要添加到队列中的url,并查看它是否已经在队列中。我试图使用此代码(我从类似的stackoverflow问题中修改了此代码),pages是队列:Python(2.7)队列重复,python,queue,duplicates,Python,Queue,Duplicates,我正在尝试为一个简单的web爬虫创建一个包含url字符串的队列。我不想将重复的项目添加到队列中,因此我创建了一个helper函数来检查要添加到队列中的url,并查看它是否已经在队列中。我试图使用此代码(我从类似的stackoverflow问题中修改了此代码),pages是队列: def is_in_url_list(self, url): return url in self.pages.queue 然而,我似乎无法让它发挥作用。即使我传递了应该返回true的内容,它也会返回false
def is_in_url_list(self, url):
return url in self.pages.queue
然而,我似乎无法让它发挥作用。即使我传递了应该返回true的内容,它也会返回false。有没有更好的办法?谢谢 出于您的目的,使用
队列
没有任何意义,相反,您可以只使用正常的列表
,也可以使用。如果您好奇的话,队列
用于多处理,因为它提供了线程安全的数据结构,不同的线程可以使用它进行通信(如果这听起来像胡言乱语,请忽略它)
因为您描述的问题是一个常见的问题,所以我提供的链接实际上展示了如何使用列表作为堆栈和队列
现在,deque
是一个双端队列,因此是d
。这可以从两端弹出,必要时成为堆栈,必要时成为队列
现在,您可能想知道,如果deque
和list
可以获得相同的结果,为什么要使用一个而不是另一个,文档中也解释了这一点:
虽然列表对象支持类似的操作,但它们针对
快速的定长操作,并为
pop(0)和insert(0,v)操作可更改大小和大小
基础数据表示的位置
现在由您选择。您所说的队列是什么类型的?我使用的是队列模块(),因此我假设它是标准的FIFO队列。这非常有用,谢谢!我对python相当陌生,我没有意识到deque是正确的选择。它现在工作得很好。