url去重算法降低时间复杂度(python小技巧)

抓取url的过程中,一般去重的实现python都是利用把url存入列表list(时间复杂度On)去实现,根据时间复杂度,list会随着url数量的增加时间复杂度逐渐增加,故我们可以
利用字典(时间复杂度O1)进行去重从而减少时间复杂度,不会因为url的大量增
加而时间复杂度进行增加。


利用list进行去重url的形式

urls = []
#我们用for循环抓取url,相当于采集了url链接
for i in xrange(10000):
    url = "http://www.baidu.com/test.php?id=a&testid={i}".format(i=i)
    #一般利用list进行的去重
    if url not in urls:
        urls.append(url)#随着url增加时间复杂度逐渐增加On



下面我们用defaultdict去实现这个去重方法,下面代码的逻辑如果dict中不存在
url,那么就把url存储到字典中并赋值为1,如果存在不会执行代码。

urls = defaultdict(lambda:'none_value')
#我们用for循环抓取url,相当于采集了url链接
for i in xrange(10000):
    url = "http://www.baidu.com/test.php?id=a&testid={i}".format(i=i)
    #用dict进行的去重
    if urls[url] == "none_value":
        urls.update({url:"1"})
    #这个方法的好处就是即使大量的url去重或者查找时间复杂度始终是O1




猜你喜欢

转载自blog.csdn.net/nextdoor6/article/details/53301714
今日推荐