作者sariel0322 (sariel)
看板Python
標題[問題] 如何修改code讓其跑更快
時間Sun Jul 20 20:16:12 2014
不好意思,最近需要跑相當大量的資料
因此需要把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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.235.15.230
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1405858575.A.61E.html
推 goldflower:用while寫在同一個迴圈 用同一個index去跑 如果超出 07/20 22:21
→ goldflower:其中一個的長度後再去做判斷跑第二個迴圈 這樣咧@@? 07/20 22:22
→ goldflower:這樣應該能減少一次重複的判斷 不知可行否 07/20 22:24
有點不懂,一樣是兩個迴圈嗎?
※ 編輯: sariel0322 (182.235.15.230), 07/20/2014 22:28:24
→ mantour:以proteinID為key建立搜尋樹 07/20 23:13
推 mantour:proteinID和GOID的對應是唯一的嗎 同樣proteinID是否會有 07/20 23:19
→ mantour:兩個以上的GOID? 07/20 23:19
→ sariel0322:個csv都兩個以上,只有一個我應該就用dict了…… 07/20 23:48
→ sariel0322:剛才沒打好,兩個csv都兩個以上 07/20 23:49
→ sariel0322:都是同一欄重複兩個以上的ID 07/20 23:51
推 goldflower:欸對耶 我那樣沒跑比較快 只是長比較短XD 07/20 23:58
推 lc85301:用dict然後存set or list如何
07/21 02:02
嗯...可行嗎?set過後應該會吧重複的都只取一個吧?
我的目的是要把兩個csv中重複match的資料都取出來作整理排列
※ 編輯: sariel0322 (120.126.36.171), 07/21/2014 13:17:11