2024-05-23 17:42:14 发布
网友
我正在写一个足球联赛的程序,我想在打印之前对表格进行排序。每个团队都是具有特定属性的类的成员,到目前为止,我已经能够正确地对整数属性进行排序
for team in sorted(teams, key=attrgetter("points", "goalDiff", "scored", "name"), reverse = True):
我想反转除name之外的所有属性,是否有可能在这行代码中“取消反转”name属性,或者我必须采用不同的方法
name
如果所有属性(名称除外)都是数字,则对这些数字求反,以获得以下属性的反向排序:
sorted(teams, key=lambda t: (-t.points, -t.goalDiff, -t.scored, t.name))
求反数字提供了一种反转排序顺序的方法,而无需实际反转排序
如果不是这样的话,那么您必须进行两次排序,首先按name属性(按正向顺序)排序,然后按其他属性的反向顺序排序。对于points、goalDiff和scored相等的任何对象,保留原始排序顺序(按名称),因为Python使用的排序算法是稳定的:
points
goalDiff
scored
sorted( sorted(teams, key=attrgetter('name')), key=attrgetter("points", "goalDiff", "scored"), reverse=True)
如果所有属性(名称除外)都是数字,则对这些数字求反,以获得以下属性的反向排序:
求反数字提供了一种反转排序顺序的方法,而无需实际反转排序
如果不是这样的话,那么您必须进行两次排序,首先按
name
属性(按正向顺序)排序,然后按其他属性的反向顺序排序。对于points
、goalDiff
和scored
相等的任何对象,保留原始排序顺序(按名称),因为Python使用的排序算法是稳定的:相关问题 更多 >
编程相关推荐