Python中的内存高效groupby

use*_*853 0 python

我有一个非常大的文件排序在一个字段上.我想将这些数据和组线读在一起,而不是在字段中包含相同的值.例如:

我有一个包含两个字段的文件:

12    fish
50    fish
1     turtle
11    dog
34    dog
12    dog
Run Code Online (Sandbox Code Playgroud)

我正在寻找使用迭代器或生成器的解决方案.我不可能将所有数据读入内存,只能将一个组(内部列表)作为时间读取.我试图使用groupby,但无法弄清楚如何根据字段中的相同值进行分组.

我如何产品列表如下:

[[12, fish], [50, fish]]
[[1, turtle]]
[[11, dog], [34, dog] [12, dog]]
Run Code Online (Sandbox Code Playgroud)

Jon*_*nts 6

from itertools import groupby
from operator import itemgetter

with open('somefile') as fin:
    lines = (line.split() for line in fin)
    for key, items in groupby(lines, itemgetter(1)):
        print list(items)

[['12', 'fish'], ['50', 'fish']]
[['1', 'turtle']]
[['11', 'dog'], ['34', 'dog'], ['12', 'dog']]
Run Code Online (Sandbox Code Playgroud)