我有一个字典子串:count 我还有一个很长的字符串(一千万个字符或更多)。 我需要将字符串中关键子字符串的出现次数输入到字典值中。
def NGFT(normaled_text):
for tg in NGFT_Table:
NGFT_Table[tg] = normaled_text.count(tg)
我尝试了简单的方法,但结果发现速度非常慢。 我需要将其速度提高 1-2 个数量级。 (目前运行时间超过一分钟,但用 C# 手工制作的计数器在大约 1 秒内完成了相同的操作。)但它是在字符串生成器的帮助下完成的。对于Python,据我了解,没有字符串生成器。
单步遍历字符串,得到每个连续的 3 个字母切片。如果这是字典中的键,则增加计数。
def NGFT(normaled_text):
for i in range(len(normaled_text) - 2):
s = normaled_text[i:i+3]
if s in NGFT_Table:
NGFT_Table[s] += 1
将字典转换为 B 树,然后递增
btree[normaled_text[i]][normaled_text[i+1]][normaled_text[i+2]]
可能会产生更好的算法。