python 學習筆記(三)根據字典中值的大小對字典中的項排序


字典的元素是成鍵值對出現的,直接對字典使用sorted() 排序,它是根據字典的鍵的ASCII編碼順序進行排序,要想讓字典根據值的大小來排序,可以有兩種方法來實現:

一、利用zip函數將字典數據轉化為元組再用sorted() 排序 

1 from random import randint 2 # 用隨機函數生成待排序的字典數據
3 my_dict = {x: randint(60, 100) for x in 'abcxyzgkj'} 4 # 將字典數據轉化為元組,把字典的值作為元組的第0項,鍵作為元組的第1項
5 my_tuple = zip(my_dict.values(), my_dict.keys()) 6 # 打印輸出排序后的結果
7 print(sorted(my_tuple))

 

二、傳遞sorted函數的key參數指定為字典的值

sorted函數的格式:sorted(iterable,key,reverse),sorted有iterable,key,reverse三個參數。

  iterable 表示可以迭代的對象,例如可以是dict.items()、dict.keys()等。

  key 是一個函數,通常使用使用lambda匿名函數來實現,用來選取參與比較的元素。

  reverse 用來指定按倒序還是順序排序,reverse=True是倒序,reverse=False是順序,默認reverse=False。

1 from random import randint 2 # 用隨機函數生成待排序的字典數據
3 my_dict = {x: randint(60, 100) for x in 'abcxyzgkj'} 4 # 把my_dict.items()所得列表中每個元組的第二個元素(value)傳到lambda函數進行排序
5 result = sorted(my_dict.items(), key=lambda x: x[1]) # x[0]是字典的鍵,x[1]是字典的值 6 # 打印輸出排序后的結果
7 print(result)

 第一種方法是對字典中鍵值的全面比較,先比較值的大小,如果兩者相等會接着比較鍵的大小來排序;第二種方法只比較指定的值的大小,如果兩者相等則不會比較鍵的大小,只依照順序來排序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM