作业帮 > 综合 > 作业

python中列表比词典的查找操作插入要慢很多?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 00:44:41
python中列表比词典的查找操作插入要慢很多?
对比代码如下,dic为词典,dic2为列表.
corpus_for_ass3train-EM.txt是我的训练语料,大概20000行,词汇量(不算重复)为55000+左右.dic的话基本是秒速统计完毕,dic2取要用3分钟左右.
我觉得是由于词典使用hash表而list每次in操作都要重头查找所以慢.
求更准确更详尽的分析
dic = {}
dic2 = []
trainFile = open("corpus_for_ass3train-EM.txt")
lines = trainFile.readlines()
for line in lines:
if len(line.strip()) == 0: continue
words = line.split()
for word in words:
if not word in dic:
dic[word] = 1
else:
dic[word] += 1
if not word in dic2:
dic2.append(word)
翻任意一本数据结构和算法分析的书,里面都有顺序表查找和Hash表查找的例子,以及理论分析.顺序表的话平均查找时间为O(n),hash表查找时间为O(1).还有插入的时间没有算在内.
python的字典操作的详细实现,我查过,在《代码之美》一书里面有python的设计人员的详细分析.我们几句话讲不清楚.
还有就是你的程序如果只是希望记录不重复的单词,用set对象代码可以更好看一点.