如何有效地对可迭代的第一项进行排序?

时间:2016-07-05 12:18:19

标签: sorting python-3.x

我使用的是一个包含大量数据的大型结构:一个“表”对象。它具有可迭代等基本功能。它遍历所有具有.get_norm()方法的项集合。为此,它使用两个索引器:rank_indexeri_rank_indexer。要获得项目编号i,我基本上会拨打self.content[self.i_rank_indexer[i]]。这两个索引器是彼此相反的,我必须让它们保持这种状态。

我想要的是能够在self.content中存储的所有15000个中获得300个第一项。目前,我正在做以下事情:

def sort(self):
        scta = [0-self.content[self.i_rank_indexer[r]].get_norm() for r in range(self.cardinal)]
        npa = np.argsort(scta)
        self.i_rank_indexer = {x:self.i_rank_indexer[npa[x]] for x in range(len(npa))}
        self.rank_indexer = {self.i_rank_indexer[key]:key for key in self.i_rank_indexer}

问题是,通过这样做,我正在排序一个15000长度的数组,这比我需要的更复杂(提取前​​300个元素)。最有效的方法是什么?我不需要保留rank_indexer系统,但我必须保留一种方法来访问它的排名。

0 个答案:

没有答案