好的,我有两个长度相同的列表。一个有学生的名字等,另一个有一个学生通过了多少门课程,这些列表是平行的。我想对第二个列表进行排序,这样我就可以找到学生通过的最多的课程,但第一个列表如何以相同的方式排序,以便显示正确的学生?我可以以某种方式使用"排序"方法吗,或者我必须做一个完全不同的过程?
提前谢谢您。
# 回答1
以下是几种方法:
- >>> names = ["Bill", "Jane", "Harrold", "Nancy"]
- >>> courses_passed = [12, 6, 14, 19]
- >>> names = ["Bill", "Jane", "Harold", "Nancy"]
- >>> courses_passed = [12, 6, 14, 19]
- >>> combined = zip(names, courses_passed)
- >>> combined
- [('Bill', 12), ('Jane', 6), ('Harold', 14), ('Nancy', 19)]
- >>> combined.sort(lambda x,y: cmp(x[1], -y[1]))
- >>> combined
- [('Nancy', 19), ('Harold', 14), ('Bill', 12), ('Jane', 6)]
- >>> print "%s passed %s courses" % (combined[0])
- Nancy passed 19 courses
- >>> most = max(courses_passed)
- >>> names[courses_passed.index(most)]
- 'Nancy'
- >>>