【发布时间】:2020-04-28 21:25:42
【问题描述】:
我在 python 方面非常基础,我遇到了一个小问题,我看不到解决方案:
我有一个Player 类的列表,其中有:
class player:
def __init__(self,name,wins,points):
self.name = name
self.wins = wins
self.points = points
稍后在制作包含数据的列表后,我需要按特定顺序排序:
- 按
wins降序排列 - 如果在
wins中绘制,则按points降序排列 - 如果在
points中绘制,则按name升序排序
我尝试了下一个解决方案的变体(失败了):
players.sort(key=lambda x: x.name)
players.sort(key=lambda x: x.points)
players.reverse()
players.sort(key=lambda x: x.wins)
players.reverse()
但在此之后我的订单有点问题(虽然wins 相等)...例如:
我有下一个数据:
list({name:"Artur", points:20, wins:1},
{name:"Jan", points:25, wins:1},
{name:"Karol", points:10, wins:0})
排序后我需要下一个订单:
Jan
Artur
Karol
但我提出的解决方案部分错误:
结果:
Artur
Jan
Karol
为什么是部分?在最终反转之前它有正确的顺序:
"Karol"
"Jan" #\this group
"Artur" #/ is in right positions
那么有一些解决方案吗?或者我只是“无法从 Internet 上找到解决方案”-man?
【问题讨论】:
标签: python python-3.x list class sorting