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')]

完美的解决了问题

    原文作者:我有一只碗
    原文地址: https://www.jianshu.com/p/9f01732737c2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞