нуууу, в чем проблема? вы хотите чтоб мы вам код написали?
когда я пользовался словарём, а не именованным кортежем, то группировку делал такой функцией
def group_list_panels(lst_dpars, listkey=LISTKEY):
"""Группирует словари в списке lst_dpars
по совпадающим ключевым значениям из списка listkey
Возвращает список словарей из двух элементов '_key' и 'data'
'_key' содержит кортеж одинаковых значений в порядке ключей представленных в listkey
для словарей представленных в data
>>> [{'_key': ('полка', 700, 400, 0, 1, 1, 1, 1),
... 'data': [{'UnitPos': 1, 'holes': [1, 2, 3], 'другие парметры': 5},
... {'UnitPos': 4, 'holes': [1, 2, 3], 'другие парметры': 5},
... {'UnitPos': 6, 'holes': [1, 2, 3], 'другие парметры': 5},
... {'UnitPos': 8, 'holes': [1, 2, 3], 'другие парметры': 5},
... {'UnitPos': 10, 'holes': [1, 2, 3], 'другие парметры': 5}]},
... {'_key': ('стенка', 700, 400, 0, 1, 1, 1, 1),
... 'data': [{'UnitPos': 3, 'holes': [1, 2, 3], 'другие парметры': 5}]},
... ]
"""
def _groupid_drop(d):
for nm in listkey:
del d[nm]
return d
lst_dpars.sort(key=lambda x: [x[k] for k in listkey])
return [{ '_key': i, 'data': list(map(_groupid_drop, grp))} for i, grp in itertools.groupby(lst_dpars, operator.itemgetter(*map(lambda nm: nm,listkey)))
]