Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按两个不同的键对列表进行排序?_Python - Fatal编程技术网

Python 如何按两个不同的键对列表进行排序?

Python 如何按两个不同的键对列表进行排序?,python,Python,有人能帮我修改代码,以便按最低技能水平(int)和字母顺序进行排序。将元组传递给排序的函数作为键,对第二个元素(技能水平)求反以降序排序,如果技能水平相同,则按作业升序排序: *Error: who(db,'Cleaning' ,4) -> [('Charles', 5), ('Diane', 4), ('Adam', 4)] but should -> [('Charles', 5), ('Adam', 4), ('Diane', 4)] 通过给键参数一个返回元组的函数,可以对两

有人能帮我修改代码,以便按最低技能水平(int)和字母顺序进行排序。

将元组传递给
排序的
函数作为键,对第二个元素(技能水平)求反以降序排序,如果技能水平相同,则按作业升序排序:

*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]))