如何使用Python dict获得班上排名前10位的学生
发布时间:2020-12-20 12:37:45 所属栏目:Python 来源:网络整理
导读:我有一个带有学生姓名和标记的字典 dict1 = {'name1': 34,'name2':45,'name3': 98,'name4':34,'name5': 66} 我希望获得前10名学生的名字以及上述词汇中的分数. 结果: name3 98name5 66name2 45name1 34name4 34 如果多个键具有相同的值,则键必须按字母顺序
我有一个带有学生姓名和标记的字典
dict1 = {'name1': 34,'name2':45,'name3': 98,'name4':34,'name5': 66} 我希望获得前10名学生的名字以及上述词汇中的分数. 结果: name3 98 name5 66 name2 45 name1 34 name4 34 如果多个键具有相同的值,则键必须按字母顺序排列(例如:name1和name4按字母顺序排列,相同值为34) 如何完成它? 解决方法
天真的解决方案
你可以用普通的python写这个: >>> names = {'name1': 34,'name5': 66} >>> sorted_names = sorted(names.iteritems(),key=lambda (k,v): (-v,k))[:10] >>> sorted_names [('name3',98),('name5',66),('name2',45),('name1',34),('name4',34)]
然后根据需要打印它们: >>> for name,score in sorted_names: ... print name,score ... name3 98 name5 66 name2 45 name1 34 name4 34 或者只是一次完成所有操作: >>> for name,score in sorted(names.iteritems(),k))[:10]: ... print name,score ... name3 98 name5 66 name2 45 name1 34 name4 34 灵感来自@Martijn Pieters‘answer 使用 >>> from heapq import nsmallest >>> for name,score in nsmallest(10,names.iteritems(),k)): ... print name,score ... name3 98 name5 66 name2 45 name1 34 name4 34 我喜欢这个解决方案的是 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |