python 数组中的字典元素根据多个字段分组后聚合

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

回到顶部