我有一个很大的tsv文件:1.5 GB。我想解析这个文件。我使用以下功能:

def readEvalFileAsDictInverse(evalFile):
  eval = open(evalFile, "r")
  evalIDs = {}
  for row in eval:
    ids = row.split("\t")
    if ids[0] not in evalIDs.keys():
      evalIDs[ids[0]] = []
    evalIDs[ids[0]].append(ids[1])
  eval.close()


  return evalIDs


这需要10多个小时,并且仍在工作。我不知道如何加快此步骤,以及是否还有另一种方法可以解析,例如文件

最佳答案

也许您可以使它更快一些。更改:

if ids[0] not in evalIDs.keys():
      evalIDs[ids[0]] = []
evalIDs[ids[0]].append(ids[1])




evalIDs.setdefault(ids[0],[]).append(ids[1])


第一种解决方案在“ evalID”字典中搜索3次。

09-25 18:54