擅长:python、mysql、java
<p>我同意您应该使用字典来处理这类事情,在更新的python上设置,如果您的应用程序可能的话,考虑迁移到比2.2更新的python。在</p>
<p>但是,如果列表是按排序顺序排列的,则可以使用“对分”模块快速搜索列表以查找元素。虽然不如迪克特快,但很接近。在</p>
<pre><code>import random, time
import bisect
class BisectContainsList(list):
def __contains__(self, elem):
i = bisect.bisect_left(self, elem)
if i != len(self) and self[i] == elem:
return True
return False
test_list = [x for x in range(10000)]
test_dict = dict(zip(test_list, [True for x in range(10000)]))
test_blist = BisectContainsList(test_list)
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)
print "blist", test(test_blist)
</code></pre>
<p>对于(2.7测试):</p>
^{pr2}$