0

我有一个按字段排序的非常大的文件。我想读取这些数据并将行组合在一起,而不是在字段中包含相同的值。例如:

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

12    fish
50    fish
1     turtle
11    dog
34    dog
12    dog

我正在寻找使用迭代器或生成器的解决方案。我不可能将所有数据读入内存,一次只能读取一组(内部列表)。我试图使用 groupby,但不知道如何根据字段中的相同值进行分组。

我怎样才能像这样的产品列表:

[[12, fish], [50, fish]]
[[1, turtle]]
[[11, dog], [34, dog] [12, dog]]
4

1 回答 1

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']]
于 2013-02-06T16:28:07.487 回答