python 字典转换,并排序

d = [
    {'id':1,'title':'1111','cate':'A','cateid':"1",'rank':"2"},
    {'id':2,'title':'2222','cate':'A','cateid':"1",'rank':"4"},
    {'id':3,'title':'3333','cate':'A','cateid':"1",'rank':"1"},
    {'id':4,'title':'4444','cate':'B','cateid':"2",'rank':"3"},
]

转换成d2,并根据cateid排序,结果要如下

d2 = [
    {'article_list':[{'id':1,'title':'1111'},{'id':2,'title':'2222'},{'id':3,'title':'3333'}],
    'cateid':"1",
    'cate':'A',
    },

    {'article_list':[{'id':4,'title':'4444'}],
    'cateid':"2",
    'cate':'B',
    },
]
阅读 3.7k
1 个回答
from itertools import groupby
key = lambda x: (x['cateid'], x['cate'])
d2 = [{'cateid': k[0], 'cate': k[1],
       'article_list': [{'id': x['id'], 'title': x['title']} for x in g]}
      for k, g in groupby(sorted(d, key=key), key=key)]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进