groupby creation When creating document from another one but all lines don't go necessary into the same document def create(self): lines = self.get_lines() for key, lines in groupby(lines, key=self.key): doc = Doc(**dict(key)) doc.lines = list(lines) def key(self, line): return ( ('key', line.value), ... )