Skip to main content
 首页 » 编程设计

python之"x in []"与 "x in {}"的搜索时间

2025年05月04日13飞鱼

我遇到了一个问题,我必须通过代理日志来查看用户是否访问过网站列表。

我写了一个小脚本来读取所有代理日志,将访问的主机与列表进行匹配:

for proxyfile in proxyfiles: 
    for line in proxyfile.readlines(): 
        if line[4] in hosts_list: 
            print line 

hosts_file 很大,我们谈论的是大约 10000 个主机,我注意到搜索花费的时间比预期的要长。

我写了一个小测试:

import random, time 
test_list = [x for x in range(10000)] 
test_dict = dict(zip(test_list, [True for x in range(10000)])) 
 
def test(test_obj): 
 s_time = time.time() 
 for i in range(10000): 
  random.randint(0,10000) in test_obj 
 d_time = time.time() - s_time 
 return d_time 
 
print "list:", test(test_list) 
print "dict:",test(test_dict) 

结果如下:

list: 5.58524107933 
dict: 0.195574045181 

所以,对于我的问题。 是否有可能以更方便的方式执行此搜索?创建列表的字典似乎是一种 hack,因为我想搜索它们的键而不是它包含的值。

请您参考如下方法:

“因为我想搜索它们的键而不是它包含的值” => 然后只需使用 set