Python排序,針對列表,字典

來源:互聯網
上載者:User

標籤:python   列表 字典 排序   

      Python的內部容器,大概分為:tuple,set,list,dict,就排序來說,對列表和字典的排序需求較多,tuple主要作為不可變容器,set用來去重複,下面把list和dict常見排序方法總結一下:

     一、列表

           1、 list排序很簡單,主要看list的元素組成,如果元素是由單值組成,比如下面的方法:

>>> a = [1,2,5,3,4]>>> a.sort()>>> print a[1, 2, 3, 4, 5]

list本身內建sort()方法,這種方法是在list本身進行操作,也就是說改變了a的原始結構

            2、list元素是由元組組成的,要求按照元組的某一列進行排序,樣本如下:

>>> a=[('c',1),('b',2),('a',3)]>>> b=sorted(a,key = lambda ss:ss[0])>>> b[('a', 3), ('b', 2), ('c', 1)]>>> a[('c', 1), ('b', 2), ('a', 3)]>>> 
採用Python的內建函數sorted(),這種很明顯是把排序結果放到了b列表中,但是實際上並不會改變a資料的原始結構,如果我們依然採用列表的sort()方法呢?樣本如下:

>>> a[('c', 1), ('b', 2), ('a', 3)]>>> a.sort(key = lambda x:x[0])>>> a[('a', 3), ('b', 2), ('c', 1)]>>> 
 還有一個方法不過使用cmp參數:

>>> c=sorted(a,cmp = lambda x,y:cmp(x[1],y[1]),reverse = 0)>>> c[('c', 1), ('b', 2), ('a', 3)]>>> 

cmp是比較,X[1],y[1]表示第一和第二個元素的第二列,reverse=0表示不進行反轉,可以reverse=False,兩者一樣效果,當然reverse不寫也可以,預設為False

             3、使用operator模組

>>> a[('c', 1), ('b', 2), ('a', 3)]>>> b = sorted(a,key=itemgetter(0))>>> b[('a', 3), ('b', 2), ('c', 1)]

二、字典排序

      字典的話,主要是按照鍵或值來排序

>>> b[('a', 3), ('b', 2), ('c', 1)]>>> dic = {'a':3,'b':2,'c':1}>>> sorted(dic.iteritems(),key = lambda aa:aa[1],reverse=False)[('c', 1), ('b', 2), ('a', 3)]>>> 
      還有的方法是直接用for迴圈來做,但我覺得直接sorted()已經很清晰了。

總結:

      一般做排序,list來說可以根據是否要改變未經處理資料結構來選擇不同的方法,字典就用sorted即可,關於效率,其實我個人感覺用lambda的key方法較快。



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Python排序,針對列表,字典

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.