以下代碼需要一段時間才能執行。 我試圖找出不在h_esmimsi字典中的c_imsi字典中的值,反之亦然。如何加速超過100k項目的兩個字符之間的比較
c_imsi和h_esmimsi有超過100,000個條目。
c_imsi = {1:'36565',2:'34545',...,1011456:'65342',...} h_emsimsi = {1:'36545',2:'34545',. ..,1011456:'36565',...}
for k, v in c_imsi.iteritems():
for k1, v1 in h_esmimsi.iteritems():
if v == v1:
matchfound = True
write_csv.writerow([k1,v1,h_esmmsisdn[k1],'',k,v,c_msisdn[k],'OK'])
break
if matchfound == False:
write_csv.writerow(['-','-','-','',k,v,c_msisdn[k],'NOK'])
matchfound = False
for k, v in h_esmimsi.iteritems():
for k1, v1 in c_imsi.iteritems():
if v == v1:
matchfound = True
break
if matchfound == False:
write_csv.writerow([k,v,h_esmmsisdn[k],'','-','-','-','NOK'])
matchfound = False
請問我該如何加快此比較?
謝謝C.Fe.(012)你的代碼沒有內存問題,速度大約快3倍。 從30分鐘到10分鐘左右。這很公平。 –
@Austin Aigbe很高興聽到這個消息,我對Python非常陌生,所以它很棒,能夠提供幫助。 –