Python 3.3.2 - 根据数字对名称列表进行排序

Rob*_*sod 0 python sorting python-3.x

我需要根据它们所加的数字对名单进行排序.我的数据示例如下:

[['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
Run Code Online (Sandbox Code Playgroud)

正常排序会这样做:

[['Bob Person', 10], ['Jimmy Dexter', 5], ['Josh Winner', 15], ['Mary Goodsprings', 15]]
Run Code Online (Sandbox Code Playgroud)

我想要进行的排序应该基于它们所加的最大数量.但是,如果数字相等,那么它应该使用名称.像这样:

[['Josh Winner', 15], ['Mary Goodsprings', 15], ['Bob Person', 10], ['Jimmy Dexter', 5]]
Run Code Online (Sandbox Code Playgroud)

注意Mary和Josh是如何并列的,但Josh仍然在前面,因为J来自M.

我几乎不知道如何做到这一点,除了我应该使用的key功能sort().

fal*_*tru 6

用于-item[1]按降序排序,item[0]数字绑定.

>>> data = [['Bob Person', 10], ['Josh Winner', 15], ['Jimmy Dexter', 5], ['Mary Goodsprings', 15]]
>>> sorted(data, key=lambda item: (-item[1], item[0]))
[['Josh Winner', 15], ['Mary Goodsprings', 15], ['Bob Person', 10], ['Jimmy Dexter', 5]]
Run Code Online (Sandbox Code Playgroud)