Поскольку itertools
может сбивать с толку, вот как вы можете это сделать:
>>> import pprint
>>> import itertools
>>> l = [
... {'word': u'live', 'sequence': 1L, 'part': 1L},
... {'word': u'school', 'sequence': 2L, 'part': 1L},
... {'word': u'job', 'sequence': 1L, 'part': 2L},
... {'word': u'house', 'sequence': 2L, 'part': 2L},
... ]
>>> l2 = [sorted(list(g), key=lambda x:x["sequence"])
... for k, g in itertools.groupby(l, key=lambda x:x["part"])]
>>> pprint.pprint(l2)
[[{'part': 1L, 'sequence': 1L, 'word': u'live'},
{'part': 1L, 'sequence': 2L, 'word': u'school'}],
[{'part': 2L, 'sequence': 1L, 'word': u'job'},
{'part': 2L, 'sequence': 2L, 'word': u'house'}]]
Предполагается, что l
уже отсортировано по клавише part
, если нет, используйте
>>> l2 = [sorted(list(g), key=lambda x:x["sequence"])
... for k, g in itertools.groupby(sorted(l, key=lambda x:x["part"]),
... key=lambda x:x["part"])]