if __name__ == "__main__": t1=datetime.datetime.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.today() print str(t2-t1)
if __name__ == "__main__": t1=datetime.datetime.today() hashtable = {} f = file("email.txt","r") f2 = file("email_new.txt","w") lines = f.readlines() for line in lines: if not hashtable.has_key(line): hashtable[line] = 1 f2.write(line) f.close() f2.close() t2=datetime.datetime.today() print str(t2-t1)
if __name__ == "__main__": t1=datetime.datetime.today() hashtable = {} f = file("email.txt","r") f2 = file("email_new.txt","w") lines = f.readlines() for line in lines: if not hashtable.has_key(line): hashtable[line] = 1 f.close() f2.writelines(hashtable.keys()) f2.close() t2=datetime.datetime.today() print str(t2-t1)
实际上我们知道采用hashtable[line] = 1方式的时候,如果键已经存在,仅仅会更新键的值而已。所以判断语句if not hashtable.has_key(line)实际上是无用的,应该去掉。 改进三:运行时间0:00:00.250000
import datetime
if __name__ == "__main__": t1=datetime.datetime.today() hashtable = {} f = file("email.txt","r") f2 = file("email_new.txt","w") lines = f.readlines() for line in lines: hashtable[line] = 1 f.close() f2.writelines(hashtable.keys()) f2.close() t2=datetime.datetime.today() print str(t2-t1)