优化 python 中的字典键 generation/lookup 3

Optimising dictionary key generation/lookup in python 3

我的程序将包含对一些大型 python 词典的大量引用。字典使用相当长的字符串作为键(通常超过 100 个字符)。我需要经常检查这些词典中是否存在某个键。通常它会用于 相同的字符串 因为它通过脚本流。

检查字典中是否存在键的复杂度为 O(1)。但是,生成字符串的散列(这是字典会做的)是 O(N),其中 N 是字符串的长度。由于我需要经常对同一个字符串进行这些检查,我想知道是否有办法优化此哈希重新生成?我的思路是(伪代码如下):

(1) receive a long string as an input
(2) create a short version of the string, e.g. by using MD5 or CRC32
(3) use the short version as a key

这有意义吗?

如果是,您会建议哪种 compression/hashing?

老实说,我过度设计了这个问题。

我试图模仿 RDBMS 的结构 table 所以一直在寻找唯一的主键。这些是我正在考虑散列的长字符串。我一直在寻找一种有效的散列方法。

但解决方案要简单得多 - 我找到了一个自动增量 PK 的等价物。在 python 中,您可以使用 itertools.count() 执行此操作。因此,我开始使用 itertools.count(),而不是使用原来的长字符串。这不是一个理想的解决方案,但它解决了问题。