我需要快速搜索文本文档中的行与其他输出进行比较,如果我在文本文档中有相同的行,我必须使用索引进行一些计算,所以我必须使用枚举,然后从我的文档中获取其他行列表通过当前索引,所以最后一个是一个点,我想要比现在快得多。数据库是一行的长列表,一行在另一行之下。所以我尝试了很多变种,如果它的一些工作速度更快,它就无法使用枚举。
你能帮助我更快地进行搜索吗?
所以这就是我想要的方式,但这种方式对于超过1500行的数据来说效果非常慢,不是很大,但实际上,工作很慢,如果文本存在于文本文档中,我需要快速查找(y)到文本索引和计算:
with open('C:\path\doc.txt', 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if (text) in line:
if i % onx:
y = lines[i + 4]
print (y)
如果我这样做,工作得更快,但如何使用枚举:
d = {}
f = open("C:\path\doc.txt","r")
for line in f:
line = line.rstrip()
l = len(line)+1
for i in range(1,l):
d[line[:i]] = True
f.close()
while True:
w = ('text')
if not w:
break
if w in d:
print (w)
同样在这里我不能直接使用枚举,只能得到(line)作为第二个变量,但它肯定会让它变得更糟:
with open('C:\path\doc.txt', 'r') as inF:
for line in inF:
if (text) in line:
print (line)
答案 0 :(得分:1)
以这种方式搜索将导致O(n * m)搜索复杂度,其中n和m是输出和文本文件的大小。使用枚举,可能会非常slow ...如果生成将字符串(文件行)映射到索引的字典,则可以将搜索的复杂性降低到O(n + m)。