0

我正在尝试使用 Python 中的 Lists 进行奖牌统计排名之类的事情。我有一个不断增长的列表。列表中的每个元素都是一个包含四个元素的列表。

例如:L = [[0,1,2,3],[3,0,6,2]]

我正在尝试对这个列表中的元素进行排名,结果结果是(对于上面的例子):

L = [[3,0,6,2],[0,1,2,3]]即类似于奖牌计数,内部列表中的第一个元素是金,第二个是银等

有没有一种简单的方法可以在 python 中做到这一点?

4

3 回答 3

4

你可以只使用内置的,排序的

sorted(L, reverse=True)

[编辑:以上将按金总数排序,然后是银数等。这似乎是对金属进行排名的最常用方法(请参阅此处的金属理货)。您还可以定义自己的函数,并使用 cmp 关键字以不同的方式对它们进行排名。]

于 2012-11-19T22:27:16.140 回答
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]]
于 2012-11-19T22:37:14.447 回答
0

如果您正在寻找的是基于谁拥有最多奖牌的降序排序,您可以使用:

L = [[0,1,2,3],[3,0,6,2],[0,0,0,22]]
sorted(L, key=sum, reverse=True)

指定sum为键会导致 sorted 调用每个元素上的函数来计算键值。

于 2012-11-19T22:31:44.487 回答