优化Python中的某些内容

时间:2016-03-26 17:39:54

标签: python dictionary matrix

所以,我有一个dicts列表,但我试图将这些值移到稀疏矩阵上:

matrix = [[0]*large for i in xrange(small)] #large is like 150k and small is about 10k

所以,为了得到这个值,我有一个所有唯一键的dict,其长度等于大,这决定了映射到各个dicts中的键的值将基于索引的位置,所以:

for i in range(len(lst)):
dic = lst[i]
for key in dic.keys():
    vectors[i][ordering.index(key)] = dic.get(key, 0)

但这需要很长时间才能完成。就像永远。 (Ordering是一个dict,它是所有dicts的合并副本......但是我希望数据作为稀疏矩阵,而不是作为dict,但我使用它来了解我应该用于稀疏矩阵的键的索引)

1 个答案:

答案 0 :(得分:1)

ordering可能是原因。

根据您使用它的方式,排序只是一个列表,但ordering.index(key)必须对列表进行全面扫描才能找到索引。

将其更改为字典,并将指定的索引作为值,如下所示:

ordering_dict = {}
for i in range(len(ordering)):
    ordering_dict[ordering[i]] = i

然后将您的作业更改为:

vectors[i][ordering[key]] = dic.get(key, 0)

这将删除每个赋值的len(订购)的整个迭代的等价物,这意味着len(lst)* len(dic)* len(排序)更少的总操作。