Python排序之sorted

Python要對list迭代序列的排序蠕搜,提供了兩種方法:
  • list的成員函數(shù)sort()排序
  • 內(nèi)建函數(shù)sorted()排序
    以上兩個函數(shù)的區(qū)別除了一個事內(nèi)建函數(shù)怎茫、一個是list成員函數(shù)外,還主要有以下區(qū)別
  • sortedsort靈活妓灌,排序方法豐富
  • sorted是產(chǎn)生一個新的列表轨蛤,sort是在原位重新排列列表
sorted()官方定義:
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
  • iterable:可迭代序列
  • cmp:用于比較的函數(shù),比較什么由key決定,有默認值虫埂,迭代集合中的一項;
  • key: 用列表元素的某個屬性用 cmp函數(shù) 進行作為關(guān)鍵字祥山,有默認值,迭代集合中的一項;
  • reverse:升降序排列掉伏,默認為升序
下面舉例來說明:
  • sort排序
    >>> L = [5, 2, 4, 1, 3]
    >>> L.sort()
    >>> L
    [1, 2, 3, 4, 5]

  • sorted排序
    >>> L = [5, 2, 4, 1, 3]
    >>> sorted(L)
    [1, 2, 3, 4, 5]

  • sorted方法之reverse
    >>> L = [5, 2, 4, 1, 3]
    >>> sorted(L,reverse=True)
    [5, 4, 3, 2, 1]

  • sorted方法之cmp:
    >>> L = [('b',2),('a',1),('c',3),('d',4)]
    >>> sorted(L,cmp=lambda x,y:cmp(x[1],y[1]))
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    -sorted方法之key(效率key>cmp(key比cmp快)):
    >>> L = [('b',2),('f',5),('e',3),('d',4),('c',1)]
    >>> sorted(L,key=lambda x:x[0])
    [('b', 2), ('c', 1), ('d', 4), ('e', 3), ('f', 5)]
    >>> sorted(L,key=lambda x:x[1])
    [('c', 1), ('b', 2), ('e', 3), ('d', 4), ('f', 5)]

  • sorted方法之key:對list先按照第二個關(guān)鍵字來排序缝呕,再按照第一個關(guān)鍵字來排序
    >>> L = [('b',2),('f',5),('e',3),('d',4),('c',1)]
    >>> sorted(L,key=lambda x:(x[1],x[0]))
    [('c', 1), ('b', 2), ('e', 3), ('d', 4), ('f', 5)]

  • sorted方法對dict排序
    >>> import operator
    >>> x = {1:2, 3:4, 4:3, 2:1, 0:0}
    >>> sorted(x.iteritems(), key=operator.itemgetter(1))
    [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
    >>> sorted(x.iteritems(), key=operator.itemgetter(0))
    [(0, 0), (1, 2), (2, 1), (3, 4), (4, 3)]

  • x.items()是把所有字典的項按照列表形式返回,x.iteritems()返回的是一個迭代器

  • operator.itemgetter:operator模塊提供的itemgetter函數(shù)用于獲取對象的哪些維的數(shù)據(jù)斧散,參數(shù)為一些序號(即需要獲取的數(shù)據(jù)在對象中的序號)供常,如:
    >>> a = [1,2,3]
    >>> b = operator.itemgetter(1) //定義函數(shù)b,獲取對象的第1個域的值
    >>> b(a)
    2
    備注:operator.itemgetter函數(shù)獲取的不是值鸡捐,而是定義了一個函數(shù)栈暇,通過該函數(shù)作用到對象上才能獲取值。

  • sorted對包含dict的list排序
    >>> x = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
    >>> sorted(x,key=operator.itemgetter('name'))
    [{'age': 10, 'name': 'Bart'}, {'age': 39, 'name': 'Homer'}]
    >>> sorted(x,key=operator.itemgetter('age'),reverse=True)
    [{'age': 39, 'name': 'Homer'}, {'age': 10, 'name': 'Bart'}]

以上就是Python的list排序闯参。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞻鹏,一起剝皮案震驚了整個濱河市悲立,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌新博,老刑警劉巖薪夕,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赫悄,居然都是意外死亡原献,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門埂淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姑隅,“玉大人,你說我怎么就攤上這事倔撞〗惭觯” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵痪蝇,是天一觀的道長鄙陡。 經(jīng)常有香客問我,道長躏啰,這世上最難降的妖魔是什么趁矾? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮给僵,結(jié)果婚禮上毫捣,老公的妹妹穿的比我還像新娘。我一直安慰自己帝际,他們只是感情好蔓同,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胡本,像睡著了一般牌柄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侧甫,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天珊佣,我揣著相機與錄音,去河邊找鬼披粟。 笑死咒锻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的守屉。 我是一名探鬼主播惑艇,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滨巴?” 一聲冷哼從身側(cè)響起思灌,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恭取,沒想到半個月后泰偿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡蜈垮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年耗跛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒发。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡调塌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惠猿,到底是詐尸還是另有隱情羔砾,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布紊扬,位于F島的核電站蜒茄,受9級特大地震影響唉擂,放射性物質(zhì)發(fā)生泄漏餐屎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一玩祟、第九天 我趴在偏房一處隱蔽的房頂上張望腹缩。 院中可真熱鬧,春花似錦空扎、人聲如沸藏鹊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侠畔,卻和暖如春撮慨,著一層夾襖步出監(jiān)牢的瞬間竿痰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工砌溺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留影涉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓规伐,卻偏偏與公主長得像蟹倾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容