itertools.groupby collects together contiguous items with the same key.
If you want all items with the same key, you have to sort self.data first.
for mid, group in itertools.groupby(
sorted(self.data,key=operator.itemgetter(1)), key=operator.itemgetter(1)):