实际案例:
- 某班英语成绩以字典形式存储为:{'LiLei':79,'Jim':88,'Lucy':92}
- 根据学生成绩高低,来计算学生排名
解决方案:
- 使用内置函数sorted
- 利用zip将字典数据转化为元组
- 传递sorted函数的key参数
首先创建随机成绩表:
from random import randint
dict_grade = {x:randint(60,100) for x in 'xyzabc'}
在执行解决方案之前,我们需要了解tuple比较的机制,因为后面使用到了tuple的比较。
(79,'a') > (78,'a')
(77,'a') < (78,'a')
(78,'b') > (78,'a')
(78,'b') < (78,'c')
(79,'b') > (78,'c')
接下来执行解决方案,首先使用zip将dict转化为tuple的列表。
list_result = sorted(zip(dict_grade.values(),dict_grade.keys()))
解决方案2:
sorted(dict_grade.items(),key = lambda x:x[1])
输出结果:
[('a', 71), ('b', 78), ('c', 82), ('x', 88), ('z', 89), ('y', 97)]
网友评论