我有两份名单-一份是球队名称,另一份是积分
我想根据分数对他们进行排序,而不至于失去对相应团队的了解。我在上面找到了一些很好用的东西——它按降序(从大到小)对团队进行排序。在
第二个列表中似乎没有排序。在
EDIT - Original Data
Teams Pts
D Clark 0
D Dupuis 2
T Leach 2
J Schutz 0
C Hearder 2
R Pagani 0
M Cameron 2
B Hunter 0
这就是我使用的:
^{pr2}$结果是:
1. T Leach (2)
2. M Cameron (2)
3. D Dupuis (2)
4. C Hearder (2)
5. R Pagani (0)
6. J Schutz (0)
7. D Clark (0)
8. B Hunter (0)
我要做的是在team name上添加一个额外的排序-如果有一个平局,那么它将按名称的升序排序
这样:
1. C Hearder (2)
2. D Dupuis (2)
3. M Cameron (2)
4. T Leach (2)
5. B Hunter (0)
6. D Clark (0)
7. J Schutz (0)
8. R Pagani (0)
您可以通过传入
key
kwarg来指定sorted
将如何排序。使用key
的一个简便方法是使用operator
模块中的itemgetter
。在例如,如果您有一个元组列表(例如通过压缩两个列表),并且希望按第二项排序,那么第一项的键将是
itemgetter(1,0)
,因此您可以执行以下操作:你有两个选择。您可以使用
cmp
或key
作为sorted
的参数。在使用
cmp
可以定义一个接受两个参数的函数,这两个值将被比较。如果第一个参数小于第二个参数,则返回一个负数。如果它大于秒,则返回一个正数。如果它们相等,则返回0。在使用
cmp
的第一个示例:如果python}的点的比较。否则,它将比较}(相反顺序)的团队。在
or
运算符的计算结果为True
(而不是如上所述的0
),那么它将返回左手边。因此,如果这些点不相等,custom_cmp
返回从x
到{y
到{另一方面,对于
key
,您只是在考虑如何单独地查看元素,以便python能够自然地理解如何按您想要的方式对元素进行排序。我们知道第一个项目正在进行适当的比较,所以现在我们只需要翻转第二个项目。数字很简单,我们可以接受负数。但是你怎么翻线呢?在一种方法是获取字符串中每个字符的
^{pr2}$ord
(它应该是字符串的ascii值整数)。然后你可以取这些值的负数并将它们打包成一个tuple
。以下是其中一个的样子:使用
key
的第二个示例:重新审视编辑:
如果我们要定义一个自定义
key
,那么我们还可以反转key
本身并删除reverse
参数:相关问题 更多 >
编程相关推荐