我如何基于键值将python dict排序到嵌套列表 [英] how can i sort python dict to nested list based on key value

查看:90
本文介绍了我如何基于键值将python dict排序到嵌套列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个嵌套的字典

 d = {'records':[
       {'name':abhi,'age':23,'dept':'cse'}, 
       {'name':anu,'age':20,'dept':'ece'},
       {'name':ammu,'age':25,'dept':'cse'},
       {'name':anju,'age':26,'dept':'ece'}
     ]}

但是我想按部门将字典重新排列.我做了不同的方法,但没有得到想要的结果.

but I want to have the dictionary rearranged, grouped by department. I have done different methods, but did not get the desired result.

d = [
      [ {'name':abhi,'age':23,'dept':'cse'},
        {'name':ammu,'age':25,'dept':'cse'}
      ],
      [ {'name':anu,'age':20,'dept':'ece'},
        {'name':anju,'age':26,'dept':'ece'}
      ]
    ]

任何帮助将不胜感激.

推荐答案

您所拥有的是词典中的词典列表.您可以使用标准列表排序方法:

What you have is a list of dictionaries within a dictionary. You can sort these dictionaries using standard list sorting methods:

d={'records':[{'name':'abhi','age':23,'dept':'cse'}, 
              {'name':'anu','age':20,'dept':'ece'},
              {'name':'ammu','age':25,'dept':'cse'},
              {'name':'anju','age':26,'dept':'ece'}]}

d['records'].sort(key = lambda x: x['name'])

>>> d['records']
[{'name': 'abhi', 'age': 23, 'dept': 'cse'}, {'name': 'ammu', 'age': 25, 'dept': 'cse'}, {'name': 'anju', 'age': 26, 'dept': 'ece'}, {'name': 'anu', 'age': 20, 'dept': 'ece'}]

针对您的特定情况:

d['records'].sort(key = lambda x: (x['name'], x['dept']))

然后使用列表理解将具有相同dept的子列表分组在一起:

And then a list comprehension to group sublists with the same dept together:

my_list = [[i for i in d['records'] if i['dept'] == de] for de in {i['dept'] for i in d['records']}]

>>> my_list
[[{'name': 'anju', 'age': 26, 'dept': 'ece'}, {'name': 'anu', 'age': 20, 'dept': 'ece'}], [{'name': 'abhi', 'age': 23, 'dept': 'cse'}, {'name': 'ammu', 'age': 25, 'dept': 'cse'}]]

这篇关于我如何基于键值将python dict排序到嵌套列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆