如何对嵌套字典的值进行排序?

时间:2021-07-26 15:00:41

标签: python sorting dictionary

这是我目前的代码,但我必须按字母顺序对各个部分进行排序,并按升序对 id 编号进行排序。有谁知道我可以在哪里以及如何在此处插入 .sort/.sorted 函数?

class_lists = {}
class_sections = {}

for i in student_data:
    for j in i['enlistment']:
        if j['course code'] not in class_lists.keys():
            class_lists[j['course code']] = [{"section":j['section'],'class list':[i['id']]}]
            class_sections[j['course code']] = [j['section']]
        else:
            if j['section'] in class_sections[j['course code']]:
                index_ = class_sections[j['course code']].index(j['section'])
                class_lists[j['course code']][index_]['class list'].append(i['id'])
            else:
                class_lists[j['course code']].append({"section":j['section'],'class list':[i['id']]})
                class_sections[j['course code']].append(j['section'])
>>> print{class_lists}
{'UK 60': [
    {
      'section': 'B', 
      'class list': [
           '201007', 
           '201005', 
           '211008',
       ]
     },
     {
       'section': 'A', 
       'class list': [
           '201077', 
           '201065', 
           '211088',
       ]
     }
   ]
}

2 个答案:

答案 0 :(得分:3)

在构建完列表后对所有列表进行排序,而不是边走边做:

for sections in class_lists.values():
    sections.sort(key=lambda s: s['section'])
    for section in sections:
        section['class_list'].sort()

答案 1 :(得分:3)

你可以这样排序:

class_lists['UK 60'] = sorted(class_lists['UK 60'], key=lambda item: item['section'])
for section in class_lists['UK 60']:
    section['class list'].sort()