当用sorted()函数对字典临时排序的时候,默认是对字典键名从小到大排序,排序的结果以列表的形式输出。如图14-10-1所示实例14-10-1用sorted()对棋类字典排序.pyw,程序执行结果见图14-10-2:
![560b0ea861a7de6fc50ecc555719f6dc.png](https://img-blog.csdnimg.cn/img_convert/560b0ea861a7de6fc50ecc555719f6dc.png)
图14-10-1
![a49143473ba4a88d5797ef6a696c895e.png](https://img-blog.csdnimg.cn/img_convert/a49143473ba4a88d5797ef6a696c895e.png)
图14-10-2
当用sorted()函数对字典临时排序的时候,如果要求字典键名从大到小排序,需要在sorted()中增加参数“reverse=True”, 如图14-10-3所示实例14-10-2用sorted()对棋类字典键名从大到小排序.pyw,程序执行结果见图14-10-4:
![ed5007323abfbe92b3e31d3cbadb8fba.png](https://img-blog.csdnimg.cn/img_convert/ed5007323abfbe92b3e31d3cbadb8fba.png)
图14-10-3
![3016f37fbe300f1a6978182937680bd9.png](https://img-blog.csdnimg.cn/img_convert/3016f37fbe300f1a6978182937680bd9.png)
图14-10-4
用sorted()函数对字典临时排序的时候,如果要求根据字典键值从小到大排序,需要修改sorted()中的参数为“chess.values()”, 如图14-10-5所示实例14-10-3用sorted()对棋类字典键值从小到大排序.pyw,程序执行结果见图14-10-6:
![795dad337fa305bdbf94ecdf096ce7bb.png](https://img-blog.csdnimg.cn/img_convert/795dad337fa305bdbf94ecdf096ce7bb.png)
图14-10-5
![4b48b7ecebb75094657ecc0560177f32.png](https://img-blog.csdnimg.cn/img_convert/4b48b7ecebb75094657ecc0560177f32.png)
图14-10-6
想想练练
如果要求根据字典键值从大到小排序,需要像根据键名从大到小排序那样进一步修改sorted()中的参数,请根据图14-10-3所示程序14-10-2和图14-10-5所示程序14-10-3那样编写程序将棋子数排序为“361,50,32,32”。
当我们想用sorted()对字典排序且要求同时输出键名和值的时候,我们就必须进一步增加sorted()中的参数,如图14-10-7所示实例程序14-10-4用sorted()对棋类字典键名从小到大排序输出键名和键值.pyw,我们在sorted()函数的参数表中修改了“chess.items()”,增加了“key=lambda x:x[0]”。程序执行后输出结果如图14-10-8:
![710418ade2034644cd23b5db6952629a.png](https://img-blog.csdnimg.cn/img_convert/710418ade2034644cd23b5db6952629a.png)
图14-10-7
大家可以看出:其输出结果以列表中的元组形式存在。它已不是字典了。如果要求最后的排序结果仍然是以字典的形式出现。需要进一步转换。
当然,字典的排序也可以使用我们本章前七节讲述的排序方法,自己编写程序实现排序的功能。
![1be3f866b1ca57d1994101d601691645.png](https://img-blog.csdnimg.cn/img_convert/1be3f866b1ca57d1994101d601691645.png)
图14-10-8
图14-10-9所示实例14-10-5字典转换为列表后按棋类键名排序.pyw,将字典依据键名用交换法进行了从小到大排序。其执行结果如图14-10-10所示,排序结果输出仍然是字典,这是真正意义的对字典的排序:
![7de63eaff296f9737e52fa2b44bb466e.png](https://img-blog.csdnimg.cn/img_convert/7de63eaff296f9737e52fa2b44bb466e.png)
图14-10-9
![0a96fefe102a4f044d4325566674d032.png](https://img-blog.csdnimg.cn/img_convert/0a96fefe102a4f044d4325566674d032.png)
图14-10-10
图14-10-12所示实例14-10-6字典转换为列表后按棋类键值排序.pyw,将字典依据键值用交换法进行了从大到小排序,它实际上只把比较语句“if a[j]>a[j+1]:”修改为“if b[j]”和“
![7262d63b0be034fd4095cfb45c2fa0d5.png](https://img-blog.csdnimg.cn/img_convert/7262d63b0be034fd4095cfb45c2fa0d5.png)
图14-10-11
![dec31a0ac7aa1af8c32e38d5dca3f4a8.png](https://img-blog.csdnimg.cn/img_convert/dec31a0ac7aa1af8c32e38d5dca3f4a8.png)
图14-10-12