Python 如何按两个不同的键对列表进行排序?
有人能帮我修改代码,以便按最低技能水平(int)和字母顺序进行排序。将元组传递给Python 如何按两个不同的键对列表进行排序?,python,Python,有人能帮我修改代码,以便按最低技能水平(int)和字母顺序进行排序。将元组传递给排序的函数作为键,对第二个元素(技能水平)求反以降序排序,如果技能水平相同,则按作业升序排序: *Error: who(db,'Cleaning' ,4) -> [('Charles', 5), ('Diane', 4), ('Adam', 4)] but should -> [('Charles', 5), ('Adam', 4), ('Diane', 4)] 通过给键参数一个返回元组的函数,可以对两
排序的函数作为键,对第二个元素(技能水平)求反以降序排序,如果技能水平相同,则按作业升序排序:
*Error: who(db,'Cleaning' ,4) -> [('Charles', 5), ('Diane', 4), ('Adam', 4)] but should -> [('Charles', 5), ('Adam', 4), ('Diane', 4)]
通过给键
参数一个返回元组的函数,可以对两个属性进行排序。试试这个:
sorted(result,key = lambda x: (-x[1], x[0]))
who(db, "Cleaning", 4)
# [('Charles', 5), ('Adam', 4), ('Diane', 4)]
在这里,您将元组中的x[1]
设为负数,以便按技能级别对名称按降序排序,然后按升序排序。这样就无需使用reverse=True
可能的
sorted(result,key = lambda x: (-x[1], x[0]))
who(db, "Cleaning", 4)
# [('Charles', 5), ('Adam', 4), ('Diane', 4)]
return sorted(result, key = lambda x: (-x[1], x[0]))