python - 字典、集合还是卡住集合?

标签 python dictionary hash set

我收集了大量数据,大约有 1000 万条条目,我的部分程序需要进行非常多的成员资格检查...

if a in data:
    return True
return False

现在我有数据作为字典条目,它们的所有值都等于“1”

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

对于我当前的字典解决方案,将 type(data) 作为 frozenset 或 set(或其他东西?)会更快吗?

为了将来找出我何时需要切换到我的程序,有谁知道检查成员资格的速度与增加可散列类型的大小有何关系? 10亿词条的字典还快吗?

最佳答案

校长

如果您希望数据持续增长,则不能使用卡住集。

对于测试元素是否存在于其中,集合在存储方面会比字典小。它在速度上类似于字典查找,因为一个集合的键和项都经过哈希处理以进行存储并且始终是唯一的。如果您不需要与用户名关联的数据,请使用集合。

实际上...

当您处理那么多条目时,将数据移动到数据库。您最终会在尝试将所有这些存储并读入内存时耗尽内存。使用数据库,您可以发出特定查询来检查成员资格。严重地。将该数据放入数据库中。

关于python - 字典、集合还是卡住集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016080/

相关文章:

python - 使用 MySQL 和 SQLAlchemy ORM 实现高精度 float

python - 在 Python 中转置 3D 列表

c++ - 在 VBA 中模仿 std::map<string, std::list<string>>

hash - 哈希 : doesn't it reduces entropy? 上的多次迭代

perl - 如何检查 Perl 中的散列中是否存在键?

python - 如何从ElasticSearch helpers.scan结果获取Python数据框

python - 在 django 和 aws 中使用 crontab 发送数千封电子邮件

python - 返回列表的所有 "positions"

c# - 在 Linq 中查找正则表达式匹配的索引

Ruby 和大哈希 : when to expect performance degradation? 具有 800K 键的哈希运行非常慢