m0_52231424 2023-09-09 18:35 采纳率: 0%
浏览 4

如何对列表里的字典进行排序

列表如下
[{‘学生姓名’: ‘SanZhang’, ‘高数成绩’: 70, ‘英语成绩’: 80,‘大物成绩’: 61}, {‘学生姓名’: ‘SiLi’,‘高数成绩’: 86,‘英语成绩’: 77,‘大物成绩’: 81}, {‘学生姓名’: ‘WuWang’,‘高数成绩’: 88,‘英语成绩’: 90,‘大物成绩’: 77}, {‘学生姓名’: ‘MingLi’,‘高数成绩’: 60,‘英语成绩’: 77,‘大物成绩’: 81}, {‘学生姓名’: ‘MiWang’,‘高数成绩’: 71,‘英语成绩’: 70,‘大物成绩’: 60}, {‘学生姓名’: ‘HaiLi’,‘高数成绩’: 88,‘英语成绩’: 78,‘大物成绩’: 89}, {‘学生姓名’: ‘HeWang’,‘高数成绩’: 70,‘英语成绩’: 90,‘大物成绩’: 80}, {‘学生姓名’: LiWang’,‘高数成绩’: 67,‘英语成绩’: 71,‘大物成绩’: 70}]
需要分别按照总分和高数成绩从高到低进行排列,如果成绩相同则按照录入先后顺序进行排列,输出案例如下,

img


求个详细代码和说明,感谢!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-09 20:22
    关注

    【以下回答由 GPT 生成】

    要对给定的列表进行排序,按照总分和高数成绩从高到低的顺序进行排列,可以使用Python内置的sorted函数。该函数可以根据指定的key来对列表进行排序。

    首先,我们需要定义一个自定义的排序函数,该函数会将每个字典的总分和高数成绩作为排序依据返回。然后,我们将这个自定义的排序函数作为sorted函数的key参数传入,以便使用它来对列表进行排序。

    在排序函数中,我们首先将高数成绩大物成绩相加得到总分,并将这个总分和高数成绩一起作为元组返回。最后,我们还需要将字典在列表中的位置作为元组的最后一个元素,以便在成绩相同时按照录入先后顺序排序。

    下面是具体的代码实现:

    def custom_sort(item):
        total_score = item['高数成绩'] + item['大物成绩']
        return (-total_score, -item['高数成绩'], item)
    
    students = [
        {'学生姓名': 'SanZhang', '高数成绩': 70, '英语成绩': 80,'大物成绩': 61},
        {'学生姓名': 'SiLi', '高数成绩': 86, '英语成绩': 77, '大物成绩': 81},
        {'学生姓名': 'WuWang', '高数成绩': 88, '英语成绩': 90, '大物成绩': 77},
        {'学生姓名': 'MingLi', '高数成绩': 60, '英语成绩': 77, '大物成绩': 81},
        {'学生姓名': 'MiWang', '高数成绩': 71, '英语成绩': 70, '大物成绩': 60},
        {'学生姓名': 'HaiLi', '高数成绩': 88, '英语成绩': 78, '大物成绩': 89},
        {'学生姓名': 'HeWang', '高数成绩': 70, '英语成绩': 90, '大物成绩': 80},
        {'学生姓名': 'LiWang', '高数成绩': 67, '英语成绩': 71, '大物成绩': 70}
    ]
    
    sorted_students = sorted(students, key=custom_sort)
    
    print(sorted_students)
    

    以上代码中,我们定义了custom_sort函数作为自定义的排序函数。在main函数中,我们调用sorted函数对students列表进行排序,指定custom_sort函数作为key参数。最后,我们将排好序的列表打印输出。

    希望以上代码能够解决您的问题,如果还有其他疑问,请随时提出。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月9日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?