我在一个字段上排序了一个非常大的文件。我想将这些数据和组线读在一起,而不是在字段中包含相同的值。例如:
我有一个包含两个字段的文件:
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]]
答案 0 :(得分: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']]