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

看板Python作者 (Range)時間11年前 (2014/07/21 14:46), 11年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《sariel0322 (sariel)》之銘言: : 不好意思,最近需要跑相當大量的資料 : 因此需要把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]) 把資料建成key是proteinID, value是GOID list的dict from collections import defaultdict GOID_table = defaultdict(list) for row in csv.reader(g): GOID_table[row[0]].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") for row in csv.reader(f): # 查詢dict的key應該是O(1) 比原本的快 if row[1] in GOID_table: for GOID in GOID_table[row[1]]: # 寫入csv應該可以用csv.writer,可以查一下 o.write(row[0] + "," + row[1]+"," + row[2] + "," + GOID + "\n") : f.close() : o.close() : g.close() : 想問一下大家有沒有更有效率的寫法 : 感恩orz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.240.114.29 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1405925173.A.4D5.html ※ 編輯: flarehunter (210.240.114.29), 07/21/2014 14:50:42

07/21 15:00, , 1F
喔喔!!速度快上超多倍的!!會多去了解你的寫法
07/21 15:00, 1F

07/21 15:00, , 2F
非常感謝你提供的寫法
07/21 15:00, 2F
文章代碼(AID): #1JpBSrJL (Python)
討論串 (同標題文章)
文章代碼(AID): #1JpBSrJL (Python)