urlデリバリーアルゴリズムは時間の複雑さを低減する(pythonテクニック)

897 ワード

urlをキャプチャする過程において、一般的に重み付けを行うpythonはurlをリストリストリストに格納するlist(時間複雑度On)を利用して実現され、時間複雑度によってlistはurl数の増加に伴って時間複雑度が徐々に増加するので、
辞書(時間的複雑度O 1)を利用して、urlの大量増加による時間的複雑度の低減を行う
加えて時間の複雑さが増す.
リストによる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