任务相对简单:读取文件,为每个条目获取记录,为每个记录检查字典的年份并创建时间配置文件。我想尽可能有效地执行此操作,因为文件(和字典)很大。
我的代码如下:
import numpy as np
with open('entries.tsv', 'r') as entries:
offset = 1920
size = 100
for line in islice(entries, None):
prot, recs = line.strip().split('\t')
ids = recs.split(" ")
years = Counter([id_dict[id] for id in ids])
print(np.array(sorted(list(years.items()))))
input()
这里的问题是,由于没有对应于该年份的记录(在本例中为1995),因此可以跳过某些年份获得输出:
[[1992 3]
[1993 3]
[1994 2]
[1996 2]
[1997 2]
[1998 5]
[1999 11]
[2000 3]
[2001 4]
[2002 3]
[2003 3]
[2004 2]
[2005 3]
[2006 3]
[2007 3]
[2008 1]
[2009 2]
[2010 2]
[2011 3]
[2012 10]
[2013 4]
[2014 4]
[2015 5]
[2016 2]
[2017 5]
[2018 4]
[2019 1]]
由于我将所有这些合并为一个大的numpy数组,因此我希望它们都具有相同的大小,例如最近100年。我实际上并不需要这些年,但是将它们留在那会更容易发现此类问题。
我不知道文件中的确切条目数,因此无法提前生成数组。我认为应该有一种比创建所需大小的数组,并在计数器上循环以增加特定索引更聪明的方法。