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

来源:互联网 发布:深圳云之讯网络 编辑:程序博客网 时间:2024/06/05 05:47
抓取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




0 0