Python: 最佳字典实现
我有几个Python脚本,里面存储了500万到1000万对字符串的键值对,使用的是字典(dictionary)。我大约查询这个字典5到10百万次。我发现Python的字典性能不是很好。有没有其他更适合字符串键的实现方式呢?
补充说明:
我有两个大名单,里面都是人名,我想把它们进行匹配。所以我把其中一个名单作为参考,然后对第二个名单里的每个名字应用不同的方法,看看它们是否在第一个名单里存在。这样的话,我需要对第一个名单查询2到3次,针对第二个名单里的每个名字。希望这样说能让你明白。
6 个回答
0
PyTables 是一个用来存储大数据集的工具。对于你的情况来说,一个字典就相当于一张表。
1
问题:这是一个扩展性的问题吗?你发现当数据量翻倍时,代码运行速度变得慢了两倍以上吗?有没有可能是你的物理内存不够,开始使用交换内存了?
100个字符的字符串有1000万个,那就是1GB。如果你有两组这样的数据,那就是2GB,这已经接近32位Windows XP程序的限制了。
如果你还不知道这个问题的答案,我建议你可以测试一下数据库在不同大小下的表现(比如10的幂或2的幂),看看性能曲线是否有突变。
1
哇,哈希表(字典)可能不是你想要的结构。
与其使用字符串,不如试试其他能提供快速哈希的表示方式。你真的在存储字符串吗?如果是这样,那就把前面句子里的“可能”去掉吧。
你能给我们更多关于你正在解决的问题的细节吗?