如何根据键值将python dict排序到嵌套列表

2024-05-18 23:43:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本嵌套字典

 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 = [
      [ {'name':abhi,'age':23,'dept':'cse'},
        {'name':ammu,'age':25,'dept':'cse'}
      ],
      [ {'name':anu,'age':20,'dept':'ece'},
        {'name':anju,'age':26,'dept':'ece'}
      ]
    ]

任何帮助都将不胜感激。你知道吗


Tags: 方法nameage字典部门recordscseanu
1条回答
网友
1楼 · 发布于 2024-05-18 23:43:24

你所拥有的是一个词典列表。您可以使用标准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的子列表分组在一起:

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'}]]

相关问题 更多 >

    热门问题