python3排序 sorted(key=lambda)--實現對字典按value值排序

使用python對列表(list)進行排序,說簡單也簡單,說複雜也複雜,我一開始學的時候也搞不懂在說什麼,只能搜索一些英文文章看看講解,如今積累了一些經驗,寫在這裏跟你們分享,html

1.sorted函數
首先介紹sorted函數,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse這三個參數。python

其中iterable表示能夠迭代的對象,例如能夠是dict.items()、dict.keys()等,key是一個函數,用來選取參與比較的元素,reverse則是用來指定排序是倒序仍是順序,reverse=true則是倒序(從大到小),reverse=false則是順序(從小到大),默認是reverse=false。函數

2.按照key排序
要對字典按照key排序,能夠直接調用sorted函數。post

my_dict = {'lilee':25, 'age':24, 'phone':12}
sorted(my_dict.keys())
輸出結果爲

['age', 'lilee', 'phone']

直接使用sorted(my_dict.keys())就能按key值對字典排序,這裏是按照順序對key值進行排序的,若是想按照倒序排序的話,只須要將reverse置爲true便可。spa

sorted(my_dcit.keys(), reverse = true)

3.按照value值排序
共有三種方法能夠實現將字典按照value值進行排序code

(1)key使用lambda匿名函數取value進行排序htm

複製代碼
d = {'lilee':25, 'wangyan':21, 'liqun':32, 'age':19}
sorted(d.items(), key=lambda item:item[1])
輸出結果爲

[('age',19),('wangyan',21),('lilee',25),('liqun',32)]
若是須要倒序則

sorted(d.items(), key=lambda item:item[1], reverse=True)
獲得的結果就會是

[('liqun',32),('lilee',25),('wangyan',21),('age',19)]
複製代碼

(2)將key和value分裝成元組,再進行排序對象

f = zip(d.keys(), d.values())
c = sorted(f)
輸出結果爲

[('age',19),('wangyan',21),('lilee',25),('liqun',32)]

咱們經過例子來詳細解釋一下函數sorted的具體用法:blog

  1. 先建立一個列表a                                                                                                                                                       排序

  2.               

  3. 直接使用sorted方法,返回一個列表就是排序好的                                                                                                             

  4.                                                                                                                                              

  5. 假如a是一個由元組構成的列表,這時候就麻煩了,咱們須要用到參數key,也就是關鍵詞,看下面這句命令,lambda是一個隱函數,是固定寫法,不要寫成別的單詞;x表示列表中的一個元素,在這裏,表示一個元組,x只是臨時起的一個名字,你能夠使用任意的名字;x[0]表示元組裏的第一個元素,固然第二個元素就是x[1];因此這句命令的意思就是按照列表中第一個元素排序    。a是一個dict ,同                                                         

  6.             

  7. 按照第二個元素排序:                                                                                               

  8.      

  9. 咱們還能夠使用reverse參數實現倒序排列                                                                                                   

  10.      

  11.  python3 取消了cmp 參數,能夠用functools.cmp_to_key 代替   參考:https://www.zhihu.com/question/30389643?sort=created

相關文章
相關標籤/搜索