如何以相同的方式对2个平行列表进行排序?

好的,我有两个长度相同的列表。一个有学生的名字等,另一个有一个学生通过了多少门课程,这些列表是平行的。我想对第二个列表进行排序,这样我就可以找到学生通过的最多的课程,但第一个列表如何以相同的方式排序,以便显示正确的学生?我可以以某种方式使用"排序"方法吗,或者我必须做一个完全不同的过程?
提前谢谢您。

# 回答1


以下是几种方法:

选择 | 换行 | 行号
  1. >>> names = ["Bill", "Jane", "Harrold", "Nancy"]
  2. >>> courses_passed = [12, 6, 14, 19]
  3. >>> names = ["Bill", "Jane", "Harold", "Nancy"]
  4. >>> courses_passed = [12, 6, 14, 19]
  5. >>> combined = zip(names, courses_passed)
  6. >>> combined
  7. [('Bill', 12), ('Jane', 6), ('Harold', 14), ('Nancy', 19)]
  8. >>> combined.sort(lambda x,y: cmp(x[1], -y[1]))
  9. >>> combined
  10. [('Nancy', 19), ('Harold', 14), ('Bill', 12), ('Jane', 6)]
  11. >>> print "%s passed %s courses" % (combined[0])
  12. Nancy passed 19 courses
  13. >>> most = max(courses_passed)
  14. >>> names[courses_passed.index(most)]
  15. 'Nancy'
  16. >>> 
# 回答2


谢谢,真是太棒了!

标签: python

添加新评论