Python字典如何根据值来排序

一个班级中的学生姓名学号存在字典里如下:

>>> from random import randint
>>> data = {x: randint(60, 100) for x in 'abcdef'}
>>> data
{'a': 83, 'f': 76, 'c': 67, 'e': 84, 'b': 68, 'd': 99}

下面要对这些学生的成绩进行排序并且输出学号和成绩

想到排序问题,Python内置的sorted最先考虑,但是如果对字典直接进行排序的话就会是下面这样

>>> sorted(data)
['a', 'b', 'c', 'd', 'e', 'f']

显然不是我们想要的结果,但是考虑元组的比较规则

>>> (1, 'a') > (2, 'b')
False
>>> (1, 'a') < (2, 'b')
True

我们就可以使用下面的方法

>>> sorted(zip(data.values(), data.keys()))
[(67, 'c'), (68, 'b'), (76, 'f'), (83, 'a'), (84, 'e'), (99, 'd')]

完美的解决了问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容