Skip to main content
 首页 » 编程设计

python之在单行代码中对整数和字符串进行排序

2025年05月04日22xiaohuochai

所以我有以下代表学生及其成绩的列表:

a = [('Tim Jones', 58), ('Anna Smith', 64), ('Barry Thomas', 80), ('Tim Smith', 80), ('Yulia Smith', 66)]  

我需要定义一个函数来按成绩降序对学生进行排序,然后是姓氏,最后是他们的名字。使用以下代码行,一切正常:

def sortStudents(a): 
    return sorted(a, key=lambda x : (-x[1], x[0])) 

但现在我还需要确保它可以将成绩作为字符串而不是整数使用,并且上述函数无法通过测试。我认为是“-”导致了问题,所以我尝试了:

return (sorted(a, key=lambda x: (x[1], x[0]), reverse=True)) 

但是它颠倒了整个列表并且它没有按预期工作,即使它通过了字符串测试。

我想我需要做的是检查成绩是否为整数,如果是 - 执行代码的第一个版本,如果不是 - 执行其他我还没有弄清楚的东西。

有人有什么想法吗?

请您参考如下方法:

你很接近但是你需要把你的分数变成一个int然后你需要拆分和反转你的名字:

>>> sorted(a, key=lambda x: (-int(x[1]), tuple(reversed(x[0].split())))) 
[('Tim Smith', 80), 
 ('Barry Thomas', 80), 
 ('Yulia Smith', 66), 
 ('Anna Smith', 64), 
 ('Tim Jones', 58)]