python 数组中的字典元素根据多个字段分组后聚合
标题表达得不太好,直接上需求:
有这样一个数组:
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'}
])
现在我想将role_list中role_id和role_name字段相同的dict聚合成一个dict,authority字段全部聚合成该dict的一个新数组类型字段,然后再组成新的list
希望得到的结果:
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(m.values())
以上是 python 数组中的字典元素根据多个字段分组后聚合 的全部内容, 来源链接: utcz.com/a/157120.html