字典,集合或冻结?

lon*_*556 8 python hash dictionary set

我有大量的数据,大约1000万条目,我的部分程序需要很多会员资格检查......

if a in data:
    return True
return False
Run Code Online (Sandbox Code Playgroud)

现在我有数据作为字典条目,其所有值都等于'1'

我还有一个使用算法来计算相同信息的程序,但是现在它比字典方法慢,但我希望数据的大小继续增长...

对于我当前的字典解决方案,将(数据)键入为冻结集,或设置(或其他什么?)更快?

并且为了将来找到我需要切换到我的程序的时间,是否有人知道检查成员资格的速度如何与增加可清除类型的大小相关联?有10亿条目的词典还快吗?

RyP*_*eck 6

关于校长

如果您希望数据不断增长,则无法使用冻结集.

一个集合将小于字典存储,用于测试其中是否存在元素.它的速度与字典查找速度相似,因为一组的键和项目都经过哈希处理以便存储并且始终是唯一的.如果您不需要与用户名关联的数据,请使用集合.

实际上......

当您处理许多条目时,将数据移动到数据库.您最终将耗尽内存,尝试将所有内容存储并读入内存.使用数据库,您可以发出特定查询来检查成员资格.认真.将该数据放入数据库中.

  • 提及在这些情况下使用数据库的+1可能会导致"MemoryError" (4认同)