Python 如何按最大数量对列表进行排序?

Python 如何按最大数量对列表进行排序?,python,list,sorting,Python,List,Sorting,这是我的清单: [['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']] 我想按数字排序,从高到低 预期成果: [['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']] 谢谢 使用key指定一个参数的函数,该参数用于从每个列表元素提取比较键。参数reverse是一个布尔值。如果设置为True,则列表元素将被排序,就像每

这是我的清单:

[['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]
我想按数字排序,从高到低

预期成果:

[['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]
谢谢

使用key指定一个参数的函数,该参数用于从每个列表元素提取比较键。参数reverse是一个布尔值。如果设置为True,则列表元素将被排序,就像每个比较都被反转一样

>>> l = [['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]
>>> sorted(l, key=lambda x: int(x[1]), reverse=True)
[['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]
使用键指定一个参数的函数,该参数用于从每个列表元素提取比较键。参数reverse是一个布尔值。如果设置为True,则列表元素将被排序,就像每个比较都被反转一样

>>> l = [['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]
>>> sorted(l, key=lambda x: int(x[1]), reverse=True)
[['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]

这个问题已经有了一个优雅的答案,但我想用itemgetter来回答

如果列表中有数字而不是字符串'9','8','10' 这会容易得多

 In [7]: a=[['Alfred Jeffries', 9], ['Peter Smalls', 10], ['Bob Daniels', 8]]

In [8]: sorted(a,key=itemgetter(1), reverse=True)
Out[8]: [['Peter Smalls', 10], ['Alfred Jeffries', 9], ['Bob Daniels', 8]]
因为有字符串,我需要使用列表理解

from operator import itemgetter
a=[['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]

k=[[i[0],str(i[1])] for i in sorted([[elem[0],int(elem[1])] for elem in a],key=itemgetter(1), reverse=True)]
输出

 [['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]

这个问题已经有了一个优雅的答案,但我想用itemgetter来回答

如果列表中有数字而不是字符串'9','8','10' 这会容易得多

 In [7]: a=[['Alfred Jeffries', 9], ['Peter Smalls', 10], ['Bob Daniels', 8]]

In [8]: sorted(a,key=itemgetter(1), reverse=True)
Out[8]: [['Peter Smalls', 10], ['Alfred Jeffries', 9], ['Bob Daniels', 8]]
因为有字符串,我需要使用列表理解

from operator import itemgetter
a=[['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]

k=[[i[0],str(i[1])] for i in sorted([[elem[0],int(elem[1])] for elem in a],key=itemgetter(1), reverse=True)]
输出

 [['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]

对不起,忘了添加那个,我正在使用python。对不起,忘了添加那个,我正在使用python。