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

Python中如何基于对象属性对对象列表进行排序?

问题原因

  • 你通过input()获取的score是字符串类型,排序时会按照字符串的字典序比对(例如字符串"1000"的首字符是'1',比"200"的首字符'2'小,所以排序时1000会排在200前面),不是按数值大小排序
  • sorted()默认是升序排列,你需要的降序效果要额外加reverse=True参数

修改方法

  1. 把读取分数的代码改成转成整数类型:
score = int(input("Input score : "))
  1. 排序时指定降序:
nl = sorted(list_player, key=lambda player: player.score, reverse=True)

补充说明

如果需要实现类似Java自定义Comparator的复杂排序逻辑,可以导入functools.cmp_to_key自定义比较函数,你的当前场景用key参数已经足够高效简洁。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:05