Pythonのリストの並べ替え

巴扎黑
リリース: 2016-12-07 10:22:07
オリジナル
1359 人が閲覧しました

例 1:
>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[ 1,2,3,4]
例 2:
>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>> >L
>>>[4,3,2,1]
例 3: 2 番目のキーワードの並べ替え
>>>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 番目のキーワードを並べ替えます
>>>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 番目のキーワードを並べ替えます
>>>L = [('b',2), ('a',1),( 'c',3),('d',4)]
>>>インポート演算子
>>>L.sort(key=operator.itemgetter( 1))
>>> ;L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4) ]
例 6: (DSU メソッド:装飾-並べ替え-アンダーコーレート)
>>>L = [('b',2),('a',1),('c',3),( 'd',4)]
> ;>>A = [(x[1],i,x) for i,x in enumerate(L)] #安定したソートが確認できました
>>> ;A.sort()
> >>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ( 'b', 2), (' c', 3), ('d', 4)]
上記はリストをソートするための 6 つのメソッドを示しています。その中で、例 3.4.5.6 はリスト項目をソートする役割を果たすことができます。効率の比較:
cmp 実験による比較では、方法 3 は方法 6 より遅く、方法 4 と方法 5 は基本的に非常に遅いです
複数のキーワードの比較ソート:
例 7 :
>>>L = [('d',2),('a',4),('b',3),('c' ,2)]
>>> L.sort(key=lambda x:x[1])
>>>[('d', 2), ('c', 2), ('b' , 3), ('a', 4)]
この時点でソートされた L は 2 番目のキーワードに従ってのみソートされていることがわかります。

2 番目のキーワードを使用してソートし、最初のキーワードを使用して次のようにしたい場合ソートには 2 つの方法があります
例 8:
>>> L = [('d',2),('a',4),('c',2 )]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>>[('c' , 2), ('d', 2), ('b', 3), ('a', 4)]
例 9:
>>> 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)




の場合単純なリストの並べ替えは、組み込み関数を直接呼び出すだけですが、辞書リストの並べ替えはそれほど単純ではありませんが、次のような非常に単純なメソッドがあります。

>>> ' : 1, 'b' : 12}, {'a' : -1, 'b' : 22},{' a' : 12, 'b' : 32},{'a' : 6, 'b' :42}]
>>> gt; & gt; & gt;

Python DICT とリストの並べ替え
1、リストの並べ替えは、メソッド
を含みます:
>>> 1,3,0]
>>> s.sort()
[0, 1, 2, 3]
2. 辞書の並べ替え
各項目にはキーと値のペアが含まれるため、ソートするには同等のキーまたは値を選択する必要があります

sorted(iterable[, cmp[, key[, reverse]]]
cmp と key は通常ラムダを使用します
例:
>>> d={"ok":1,"no":2}
辞書をキーでソートし、タプルリストの形式で返します
> ;>> ;sorted(d.items, key=lambda d:d[0])
[('no', 2), ('ok', 1)]
辞書を値でソートし、それをタプルリスト
>>>sorted(d.items, key=lambda d:d[1])
[('ok', 1), ('no', 2)]
3.例:
>>> li=[(2,'a'),(4,'b'),(1,'d')]
>>> li.sort()
[ (1, 'd'), (2, 'a'), (4, 'b')]
辞書が項目の最初の要素でソートされている場合、タプルのリストに変換できます
> >> d ={"ok":1,"no":2}
>>> tt=[d.items() の項目のタプル(item)]
>>> .sort()
[('no', 2), ('ok', 1)]
4 他の人の実装をメモしておきます
以下は構造体の例です


>>> :
def __init__ (self,a,b):

>>> テスト = [test1,test2]
>>>sorted(tests,cmp = lambda x,y: cmp(x.a, y.a )) (tests,key = lambda d:d.a)
5、

# (私見) 最も単純なアプローチ:
defsortedDictValues1(adict):
items = adict.items()
items.sort()
return [value for key , value in items]

# 代替実装。これは
# 私のマシン上の大きな
# 辞書の場合、たまたま少し速く実行されます:
defsortedDictValues2(adict):
keys = adict.keys()

keys .sort ()

return [dict[key] for key inkeys]

# 私のボックスのさらにわずかな高速化
# はバインドメソッドをマップすることです:
defsortedDictValues3(adict):
keys = adict .keys ()
key.sort()
return map(adict.get, key)

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート