応用例:
1. アルファベットに従ってシーケンスを出力
2. レコードの複数のフィールドを並べ替える
よく使用される並べ替え関数:
sort()
sorted()
比較:
1.sorted() の適用範囲が広い
sorted(iterable[, cmp[, key[, reverse]]])
s.sorted([cmp[, key[, reverse]]])
例:
> ;>> 人 = [{'名前':'ジョン','年齢': 32}, {'名前':'アラン','年齢': 50}, {'名前': 'ボブ', ' 年齢':23}]
>>>sorted(persons, key=lambda x: (x['名前'], -x['年齢']))
[{'年齢': 50 , 'name': 'Alan'}, {'age': 23, 'name': 'Bob'}, {'age': 32, 'name': 'Jon'}]
sorted() が使用できます反復可能なオブジェクトの場合、sort() は通常、リストに対して機能します
>>> a = (1,2,4,2,3)
>>> a.sort()
Traceback (最新のもの)最後に呼び出します):
ファイル "
AttributeError: 'タプル' オブジェクトには属性 'sort' がありません
>>>sorted(a)
[1, 2 , 2, 3 , 4]
2.sorted() は並べ替えられたリストを返し、元のリストは変更されず、sort() は元のリストを直接変更します。
sort() は元のリストをコピーする必要がなく、消費メモリが少なく、非常に効率的です
>>> a=['1',1,'a',3,7,'n']
>>> 並べ替え(a)
[1, 3, 7, '1', 'a', 'n']
>>> a
['1', 1, 'a' , 3 , 7, 'n']
>>> a.sort()
>>> a
[1, 3, 7, '1', 'a', 'n']
3. sort() 関数とsorted() 関数の場合、パラメーター cmp よりもパラメーター キーを渡す方が効率的です。 cmp によって渡される関数は並べ替えプロセス全体で複数回呼び出されますが、これはコストが高くなります。キーは要素ごとに 1 回しか処理されません。
>>> 時間からインポートタイマー
>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs=range(100); xs=zip(xs,xs);").timeit(10000)
0.35391712188720703
>>> Timer(stmt="sorted(xs,cmp=lambda a,b: cmp(a[1],b[ 1]))",setup="xs=range(100);xs=zip(xs,xs);").timeit(10000)
0.4931659698486328
4.sorted() はさまざまなデータ構造を並べ替えることができます
辞書:
電話帳の電話番号を数値サイズで並べ替えます
>>> 電話帳 = {'Linda':'7750','Bob':'9345','Carol':'5834'}
> ;>> オペレーターからのインポート itemgetter
>>>sorted_pb=sorted(phonebook.iteritems(),key=itemgetter(1))
>>> '), ('Linda', '7750'), ('Bob', '9345')]
>>> ゲーム結果 = [['ボブ',95.00,'A'],['アラン',86.0,'C'],['マンディ',82.5,'A'],['ロブ ' ,86,'E']]
>sorted(gameresult, key=itemgetter(2, 1))
[['マンディ', 82.5, 'A'], ['ボブ', 95.0, ' A'], ['Alan', 86.0, 'C'], ['Rob', 86, 'E']]
... '張': ['E',2],
... '王':['p',3],
... 'ドゥ':[ ' C',2]}
>>> 演算子から import itemgetter
>>> selected(mydict.iteritems(),key=lambda(k,v):operator.itemgetter(1)(v ) )
[('張', ['E', 2]), ('ドゥ', ['C', 2]), ('王', ['p', 3]), ('李' , ['M', 7])]
... {"名前":"デビッド","勝ち":3,"負け":5,"評価":57.00} ]
>>> オペレーターインポートアイテムゲッターから>>>sorted(gameresult,key=itemgetter("評価","名前"))
[{'wins': 3, '評価': 57.0 , '名前': 'デビッド', '負け': 5}, {'勝ち': 10, '損失': 3, '名前': 'ボブ', '評価': 75.0}]
>>> ;
その他の Python ソート sort() およびsorted() 関連記事については、PHP 中国語 Web サイトに注目してください。