日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 十四、Python的自定義排序 以及兩種排序方式

十四、Python的自定義排序 以及兩種排序方式

來源:程序員人生   發布時間:2015-05-04 09:47:05 閱讀次數:3657次
data_list = [] data_list.append({'softname':'1','version':'1.2.2.2'}) data_list.append({'softname':'7','version':'1.2.2.2'}) data_list.append({'softname':'5','version':'1.2.2.2'}) data_list.append({'softname':'2','version':'1.2.2.2'}) data_list.append({'softname':'3','version':'1.2.2.2'}) data_list.append({'softname':'9','version':'1.2.2.2'}) #升序 data_list.sort(key=lambda obj:obj.get('softname'), reverse=False) print data_list #[{'softname': '1'}, {'softname': '2'}, {'softname': '3'}, {'softname': '5'}, {'softname': '7'}, {'softname': '9'}] #降序 data_list.sort(key=lambda obj:obj.get('softname'), reverse=True) print data_list #[{'softname': '9'}, {'softname': '7'}, {'softname': '5'}, {'softname': '3'}, {'softname': '2'}, {'softname': '1’}] 對List進行排序,Python提供了兩個方法 方法1.用List的內建函數list.sort進行排序 list.sort(func=None, key=None, reverse=False) Python實例: 1 2 3 4 5 6 >>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> list.sort() >>> list [2, 3, 5, 8, 9] 方法2.用序列類型函數sorted(list)進行排序(從2.4開始) Python實例: 1 2 3 4 5 >>> list = [2,5,8,9,3] >>> list [2,5,8,9,3] >>> sorted(list) [2, 3, 5, 8, 9] 兩種方法的區分: sorted(list)返回1個對象,可以用作表達式。原來的list不變,生成1個新的排好序的list對象。 list.sort() 不會返回對象,改變原本的list。 其他sort的實例: 實例1:正向排序 1 2 3 4 >>>L = [2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4] 實例2:反向排序 1 2 3 4 >>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1] 實例3:對第2個關鍵字排序 1 2 3 4 >>>L = [('b',6),('a',1),('c',3),('d',4)] >>>L.sort(lambda x,y:cmp(x[1],y[1])) >>>L >>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)] 實例4: 對第2個關鍵字排序 1 2 3 4 >>>L = [('b',6),('a',1),('c',3),('d',4)] >>>L.sort(key=lambda x:x[1]) >>>L >>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)] 實例5: 對第2個關鍵字排序 1 2 3 4 5 >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>import operator >>>L.sort(key=operator.itemgetter(1)) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 實例6:(DSU方法:Decorate-Sort-Undercorate) 1 2 3 4 5 6 >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort >>>A.sort() >>>L = [s[2] for s in A] >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 以上給出了6中對List排序的方法,其中實例3.4.5.6能起到對以List item中的某1項 為比較關鍵字進行排序. 效力比較: cmp < DSU < key 通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當 多關鍵字比較排序: 實例7: 1 2 3 4 >>>L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)] 我們看到,此時排序過的L是僅僅依照第2個關鍵字來排的, 如果我們想用第2個關鍵字排過序后再用第1個關鍵字進行排序呢?有兩種方法 實例8: 1 2 3 4 >>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:(x[1],x[0])) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] 實例9: 1 2 3 4 >>> L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=operator.itemgetter(1,0)) >>> L >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)] 為何實例8能夠工作呢?緣由在于tuple是的比較從左到右比較的,比較完第1個,如果相等,比較第2個

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线国产一区二区 | 黄色大片在线播放 | 日韩亚州 | 热re99久久精品国产99热 | 成人亚洲精品久久久久软件 | 国产青青久久 | 欧美日韩在线精品 | 在线视频中文 | 日韩三区| 日韩在线亚洲 | 日本在线观看 | av电影日韩| 国产一级一级国产 | 午夜欧美一区二区三区在线播放 | 国产成人精品一区二区三区在线 | 精品国产一区二区三区麻豆小说 | 国产欧美日韩视频 | 日本一区二区在线播放 | 国产精品99久久久久久www | 久久久99国产精品免费 | 欧美日韩第一页 | jizz女人jizzz19 | 在线视频中文字幕 | 国产在线精品一区二区三区 | 国产成人精品一区二区三区在线 | 一区二区福利视频 | 美女久久 | 久久99精品久久 | 成人性生活大片免费看一 | 欧美综合精品 | 91操碰| 黄色电影在线免费看 | 国外成人在线视频网站 | 一区二区三区精品国产 | 亚洲国产欧美在线 | 久久久蜜桃 | 亚洲激情在线视频 | 不卡一二三区 | 国产欧美123| 成人久久久精品国产乱码一区二区 | 国产精品三级 |