这是我的名单:如何按最高数字对列表进行排序?
[['Alfred Jeffries', '9'], ['Peter Smalls', '10'], ['Bob Daniels', '8']]
我想通过数字来排序,这一点,从最高到最低。
预期成果:
[['Peter Smalls', '10'], ['Alfred Jeffries', '9'], ['Bob Daniels', '8']]
谢谢!
这是我的名单:如何按最高数字对列表进行排序?
[['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']]
这个问题已经得到了一个优雅的答案,但我想用itemgetter做到这一点。
如果列表中有数字而不是strings('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。 – jordan112