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

看板Python作者 (sariel)時間11年前 (2014/07/20 20:16), 11年前編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/2 (看更多)
不好意思,最近需要跑相當大量的資料 因此需要把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

07/20 22:21, , 1F
用while寫在同一個迴圈 用同一個index去跑 如果超出
07/20 22:21, 1F

07/20 22:22, , 2F
其中一個的長度後再去做判斷跑第二個迴圈 這樣咧@@?
07/20 22:22, 2F

07/20 22:24, , 3F
這樣應該能減少一次重複的判斷 不知可行否
07/20 22:24, 3F
有點不懂,一樣是兩個迴圈嗎? ※ 編輯: sariel0322 (182.235.15.230), 07/20/2014 22:28:24

07/20 23:13, , 4F
以proteinID為key建立搜尋樹
07/20 23:13, 4F

07/20 23:19, , 5F
proteinID和GOID的對應是唯一的嗎 同樣proteinID是否會有
07/20 23:19, 5F

07/20 23:19, , 6F
兩個以上的GOID?
07/20 23:19, 6F

07/20 23:48, , 7F
個csv都兩個以上,只有一個我應該就用dict了……
07/20 23:48, 7F

07/20 23:49, , 8F
剛才沒打好,兩個csv都兩個以上
07/20 23:49, 8F

07/20 23:51, , 9F
都是同一欄重複兩個以上的ID
07/20 23:51, 9F

07/20 23:58, , 10F
欸對耶 我那樣沒跑比較快 只是長比較短XD
07/20 23:58, 10F
lc85301:用dict然後存set or list如何 07/21 02:02 嗯...可行嗎?set過後應該會吧重複的都只取一個吧? 我的目的是要把兩個csv中重複match的資料都取出來作整理排列 ※ 編輯: sariel0322 (120.126.36.171), 07/21/2014 13:17:11
文章代碼(AID): #1JoxCFOU (Python)
文章代碼(AID): #1JoxCFOU (Python)