Форум сайта python.su
0
Есть начальный список:
[ {'group_id' : 1, 'name' : 'aaa', 'age' : 111}, {'group_id' : 1, 'name' : 'bbb', 'age' : 222}, {'group_id' : 2, 'name' : 'ccc', 'age' : 333}, {'group_id' : 2, 'name' : 'ddd', 'age' : 444}, {'group_id' : 3, 'name' : 'eee', 'age' : 555}, {'group_id' : 3, 'name' : 'fff', 'age' : 666}, ]
[ {'group_id': 1, 'data' : [{'name' : 'aaa', 'age' : 111}, {'name' : 'bbb', 'age' : 222}]}, {'group_id': 2, 'data' : [{'name' : 'ccc', 'age' : 333}, {'name' : 'ddd', 'age' : 444}]}, {'group_id': 3, 'data' : [{'name' : 'eee', 'age' : 555}, {'name' : 'fff', 'age' : 666}]}, ]
Офлайн
25
#-*- coding: utf8 -*- import itertools import operator INPUT=[ {'group_id' : 1, 'name' : 'aaa', 'age' : 111}, {'group_id' : 1, 'name' : 'bbb', 'age' : 222}, {'group_id' : 2, 'name' : 'ccc', 'age' : 333}, {'group_id' : 2, 'name' : 'ddd', 'age' : 444}, {'group_id' : 3, 'name' : 'eee', 'age' : 555}, {'group_id' : 3, 'name' : 'fff', 'age' : 666}, ] def groupid_drop(d): del d['group_id'] return d RESULT=[{'group_id': i, 'data': map(groupid_drop, grp)} for i, grp in itertools.groupby(INPUT, operator.itemgetter('group_id'))] print RESULT
Офлайн