以下字典代表6位不同同学的分数,如何根据分数给同学排名字:

 d = {'a': 73, 'b': 69, 'c': 66, 'x': 76, 'y': 88, 'z': 83}

方法一:
思路:
将字典转换成数组, sorted函数可以对数组进行排序,但是sorted 函数是先排数据第一个元素再第二个元素,因此需要把字典的值放在键的前面,字典如何转换成数组?使用zip函数。
code:

In [10]: sorted(zip(d.itervalues(), d.iterkeys()))
Out[10]: [(66, 'c'), (69, 'b'), (73, 'a'), (76, 'x'), (83, 'z'), (88, 'y')]

方法二:
思路:
sorted() 函数有参数key 可以指定根据对象的哪个元素来排序,但是在此之前也需要先把字典转换成元组的列表,字典items()可以帮忙。

In [11]: d.items()
Out[11]: [('a', 73), ('c', 66), ('b', 69), ('y', 88), ('x', 76), ('z', 83)]

In [12]: sorted(d.items(), key=lambda x: x[1])
Out[12]: [('c', 66), ('b', 69), ('a', 73), ('x', 76), ('z', 83), ('y', 88)]

来自课程《Python高效编程技巧实战》的学习笔记

标签: none

添加新评论