http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net
分类: Python/Ruby
2011-12-18 20:40:53
遇到的问题是,我把E-mail地址收集在txt文件中(每行一个E-mail地址,共78000行),要求是把其中重复的E-mail地址全部去掉。考虑编程方便,我用了CString类,但似乎效率不高。我写出来的整理78000份E-mail地址的需要近7分钟的时间
我给他用Python实现了一个(这个版本是修改过的,当时我随手实现的一个版本做错了,呵呵)
这里算法的主要内容就是利用hash_table来判断email是否已经重复出现,这比字符串的查找要快的多。
#remove duplicated email address from file
import datetime
if __name__ == "__main__":
t = datetime.datetime(2000,1,1)
print str(t.today())
hashtable = {}
f = file("email.txt","r")
f2 = file("email_new.txt","w")
line = f.readline();
while len(line)>0:
if not hashtable.has_key(line):
hashtable[line] = 1
f2.write(line)
line = f.readline();
f.close()
f2.close()
t2 = datetime.datetime(2000,1,1)
print str(t2.today())
上面的算法在我的机器上:P4 2.8G,512M 内存,耗时大约300ms