Niepokojące dziwne zachowanie / błąd w Pythonie itertools groupby?

ja używamitertools.groupby analizować krótki tekstowy plik rozdzielany tabulatorami. plik tekstowy ma kilka kolumn i wszystko, co chcę zrobić, to zgrupować wszystkie wpisy, które mają określoną wartośćx w konkretnej kolumnie. Poniższy kod robi to dla kolumny o nazwiename2, szuka wartości w zmiennejx. Próbowałem to zrobić za pomocącsv.DictReader iitertools.groupby. W tabeli są8 wiersze zgodne z tymi kryteriami, więc należy zwrócić 8 wpisów. Zamiastgroupby zwraca dwa zestawy wpisów, jeden z pojedynczym wpisem, a drugi z 7, co wydaje się złym zachowaniem. Wykonuję dopasowywanie ręcznie poniżej na tych samych danych i uzyskuję właściwy wynik:

import itertools, operator, csv
col_name = "name2"
x = "ENSMUSG00000002459"
print "looking for entries with value %s in column %s" %(x, col_name)
print "groupby gets it wrong: "
data = csv.DictReader(open(f), delimiter="\t", fieldnames=fieldnames)
for name, entries in itertools.groupby(data, key=operator.itemgetter(col_name)):
    if name == "ENSMUSG00000002459":
        wrong_result = [e for e in entries]
        print "wrong result has %d entries" %(len(wrong_result))
print "manually grouping entries is correct: "
data = csv.DictReader(open(f), delimiter="\t", fieldnames=fieldnames)
correct_result = []
for row in data:
    if row[col_name] == "ENSMUSG00000002459":
        correct_result.append(row)
print "correct result has %d entries" %(len(correct_result))

Otrzymuję dane wyjściowe:

looking for entries with value ENSMUSG00000002459 in column name2
groupby gets it wrong: 
wrong result has 7 entries
wrong result has 1 entries
manually grouping entries is correct: 
correct result has 8 entries

co tu się dzieje? Jeśligroupby naprawdę grupuje, wydaje mi się, że powinienem otrzymać tylko jeden zestaw wpisów nax, ale zamiast tego zwraca dwa. Nie mogę tego rozgryźć.EDYTOWAĆ: Ah dostał to powinno być posortowane.

questionAnswers(3)

yourAnswerToTheQuestion