搜索集合的最佳数据结构

时间:2017-11-12 17:40:00

标签: python data-structures

目前我收集了数十万个ID作为整数,我正在执行以下任务(假设此集合暂时存储在列表cache中):

cache = list()
# lets say this cache is populated
for x in range(0,1000000):
    if x not in cache:
        #do_something

使用列表搜索not in某些内容对我来说有多贵?我是否会从使用其他数据结构中受益,如果是这样,哪一个最好?

2 个答案:

答案 0 :(得分:4)

您应该考虑使用set。虽然最坏情况下x in cache的时间复杂度仍为O(n),但平均情况为O(1)(source)。

答案 1 :(得分:1)

如果您可以通过生成器在cache中创建数据,则可以放弃创建大约1e5的列表并节省内存。然后,您只需使用以下内容测试x not in

desired_id = 123456
cache = some_function_to_generate_integer_ids()  # cache is a generator
print desired_id in cache

如果False不在缓存中,则会打印desired_id