[問題] 如何修改code讓其跑更快

作者: sariel0322 (sariel)   2014-07-20 20:16:12
不好意思,最近需要跑相當大量的資料
因此需要把code的速度做最有效的提升
這是我的兩個data
pfam.csv_IPR_NA.csv(csv不小心重複了,不過不是重點:p):
http://ppt.cc/oB18
proteinIDandGOID_norepet.csv:
http://ppt.cc/NSE3
我需要把第一個csv的第二欄跟第二個csv的第一個欄位做對應
有對應到的全部做輸出
類似下面這樣:
http://ppt.cc/UA7t
以下是我的code:
import csv
proteinID = []
GOID = []
a = 0
o = open("final.csv","w")
g = open("proteinIDandGOID_norepet.csv","r")
f = open("pfam.csv_IPR_NA.csv","r")
for row in csv.reader(g):
proteinID.append(row[0])
GOID.append(row[1])
for row in csv.reader(f):
for i in range(len(GOID)):
if row[1] == proteinID[i]:
o.write(row[0] + "," + row[1]+"," + row[2] + "," + GOID[i] + "\n")
f.close()
o.close()
g.close()
想問一下大家有沒有更有效率的寫法
感恩orz
作者: goldflower (金色小黃花)   2014-07-20 22:21:00
用while寫在同一個迴圈 用同一個index去跑 如果超出其中一個的長度後再去做判斷跑第二個迴圈 這樣咧@@?這樣應該能減少一次重複的判斷 不知可行否
作者: mantour (朱子)   2014-07-20 23:13:00
以proteinID為key建立搜尋樹proteinID和GOID的對應是唯一的嗎 同樣proteinID是否會有兩個以上的GOID?
作者: sariel0322 (sariel)   2014-07-20 23:48:00
個csv都兩個以上,只有一個我應該就用dict了……剛才沒打好,兩個csv都兩個以上都是同一欄重複兩個以上的ID
作者: goldflower (金色小黃花)   2014-07-20 23:58:00
欸對耶 我那樣沒跑比較快 只是長比較短XD

Links booklink

Contact Us: admin [ a t ] ucptt.com