2

我正在使用存储在字典中的大约 1000 万个唯一 dna 序列进行模拟。而且我需要处理每个序列,其中包括以 5 个字母为一组逐个字母地遍历序列(取前 5 个字母,将索引移位一个再取 5 个字母),并在单独的函数中处理它。这需要相当多的时间,因为我已经设置了它,所以它在 for 循环中一个一个地遍历每个序列。

我正在寻找一种将字典分成大约 20 个块的方法,我可以使用多处理来处理这些块。有没有比遍历每个键并迭代地填写 20 个字典更简单的方法?

4

2 回答 2

1

我建议使用itertools.groupby,这是 itertools 的工作。文档在这里

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

您所要做的就是指定块的数量或您的案例,n = 5

于 2013-08-02T20:19:12.800 回答
0

您不需要拆分字典,只需将键拆分为 20 个组并在同一个字典上工作。我认为这更简单。

于 2013-08-02T20:18:04.663 回答