我正在尝试使用python中的列表进行奖牌排名。我有一个不断增长的列表。列表中的每个元素都是一个包含四个元素的列表。
例如:L = [[0,1,2,3],[3,0,6,2]]
我正在尝试对这个列表中的元素进行排名,结果结果是(对于上面的例子):
L = [[3,0,6,2],[0,1,2,3]]
,比如奖牌统计,内部列表中的第一个元素是金,第二个是银等
在python中有一种简单的方法吗?
答案 0 :(得分:4)
您可以使用内置的sorted
sorted(L, reverse=True)
[编辑:以上将按金币总数,银牌数等排名。这似乎是排名金属的最常见方式(参见Metal Tally here)。您也可以定义自己的功能,并使用cmp关键字以不同的方式对它们进行排名。]
答案 1 :(得分:1)
无需做任何花哨的事情,这特别是内置sorted
所做的事情。
L = [[0,1,2,3],[3,0,6,2],[3,0,5,2],[3,0,6,3],[11,1,0,0],[3,0,7,1]]
sorted(L,reverse=True)
[[11, 1, 0, 0],
[3, 0, 7, 1],
[3, 0, 6, 3],
[3, 0, 6, 2],
[3, 0, 5, 2],
[0, 1, 2, 3]]
答案 2 :(得分:0)
如果你要找的是基于谁拥有最多奖牌的降序排序,你可以使用:
L = [[0,1,2,3],[3,0,6,2],[0,0,0,22]]
sorted(L, key=sum, reverse=True)
将sum
指定为键会导致排序以调用每个元素上的函数来计算键值。