【发布时间】:2017-02-17 18:50:54
【问题描述】:
我有两个列表 - 一个用于团队名称,第二个用于积分
我想在不丢失对应团队的情况下根据分数对它们进行排序。我在 SO 上找到了一些非常适合执行此操作的内容 - 它按降序(从多到少)按点对团队进行排序。
第二个列表中似乎没有排序。
编辑 - 原始数据
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
这是我正在使用的:
pts, teams = zip(*sorted(zip(pts, teams), reverse=True))
i = 1
for team, num_pts in zip(teams, pts):
standings = str(i) + '. ' + team + " (" + num_pts + ")"
print standings
i += 1
结果如下:
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)
我要做的是在团队名称上添加一个额外的排序 - 所以如果有平局,那么它将按名称升序排序,
像这样:
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参数排序调用,带有可调用,见stackoverflow.com/questions/3121979/… -
能否也显示原始数据?
-
抱歉 - 对 Python 很陌生 - 不知道如何用我的两个列表修改它 - 我猜它们有点像元组。 lambda 是什么意思?
-
@thefourtheye - 当然我必须从我的 html 处理中转储它。等一下
-
好的 - 添加原始数据顺序
标签: python list python-2.7 sorting