You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按JoiningDate(非0时)或uid对Python字典列表排序?

修正字典列表的排序代码

先帮你梳理下原代码的问题:

  • 你误把原列表名写成了set_of_students,实际应该是定义好的students
  • sorted()的key参数不能用这种分支式的写法,得用一个统一的lambda表达式来返回排序依据的键值

正确实现代码

你需要让key对应的lambda函数根据JoiningDate是否为0返回不同的排序字段,这样就能满足需求了:

students = [{"name": "Student1", "JoiningDate": 2012, "uid": 5}, 
            {"name": "Student2", "JoiningDate": 2008, "uid":10}, 
            {"name": "Student3", "JoiningDate": 2017, "uid": 1}]

sorted_students = sorted(students, key=lambda item: item['JoiningDate'] if item['JoiningDate'] != 0 else item['uid'])

代码逻辑解释

  • 当字典中的JoiningDate不为0时,lambda函数返回JoiningDate的值,排序就按这个日期升序排列
  • 当JoiningDate为0时,lambda函数返回uid的值,排序就按uid升序排列

测试结果

运行上面的代码后,sorted_students的结果会是:

[
    {"name": "Student2", "JoiningDate": 2008, "uid": 10},
    {"name": "Student1", "JoiningDate": 2012, "uid": 5},
    {"name": "Student3", "JoiningDate": 2017, "uid": 1}
]

完全符合按JoiningDate排序的预期。如果之后遇到某个学生的JoiningDate为0,比如新增{"name": "Student4", "JoiningDate": 0, "uid": 3},排序时就会按uid来排列这个学生的位置。

内容的提问来源于stack exchange,提问作者Pradeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:04:14