源数据
role_list = ([
{role_id: 1, role_name: 'admin', 'authority': 'create_staff'},
{role_id: 1, role_name: 'admin', 'authority': 'delete_staff'},
{role_id: 1, role_name: 'admin', 'authority': 'read_staff'},
{role_id: 2, role_name: 'manager', 'authority': 'read_staff'},
{role_id: 2, role_name: 'manager', 'authority': 'delete_staff'},
{role_id: 3, role_name: 'staff', 'authority': 'read_staff'}
])
需要的数据
new_role_list = ([
{role_id: 1, role_name: 'admin', 'authority': ['create_staff','delete_staff','read_staff']},
{role_id: 2, role_name: 'manager', 'authority': ['read_staff','delete_staff']},
{role_id: 3, role_name: 'staff', 'authority': ['read_staff']}
])
方法:
m = {}
for i in role_list:
rid, rn = str(i['role_id']), i['role_name']
m.setdefault(rid+rn, {
'role_id': rid,
'role_name': rn,
'authority': []
})['authority'].append(i['authority'])
print(list(m.values()))



