>>> a = [1,9,3,7,2,0,5]
>>> 🎜>>> print a
[0, 1, 2, 3, 5, 7, 9]
>>> >> a
[9, 7, 5, 3, 2, 1, 0]
>>> b = ['e','a','be','ad ','dab', 'dbc']
>>> b.sort()
>>> print b
['a', 'ad', 'be' , 'dab', ' dbc', 'e']
リストのソートは DSU (decorate-sort-undecorate) モードに従い、シーケンスはエントリがインストールされた順序で比較されます。先ほどの例の文字列の場合、左から右へ順番に文字を1つずつ比較し、結果が得られたら比較を終了します。
2. 辞書 (dict) を並べ替えます
実際、辞書 (dict) は順序付けされていないシーケンスであり、並べ替えについて話す必要はありません。辞書のキー/値に従って並べ替えて、対応する値/キーを配置することしかできません。同じ順序で
辞書の任意の並べ替え 問題は最終的には、辞書内のキーまたは値で構成されるリストを並べ替えることになります
1. 辞書内のキーによる並べ替え [1]
コードをコピー
コードは次のとおりです。defsortedDictValues(adict,reverse=False) :
keys = adict.keys()
keys.sort(reverse=reverse)
return [keys のキーの adict[key]]
キーと値を返す必要がある場合同時に、最後の return ステートメントを次のように変更することが目的です:
コードをコピーします
コードは次のとおりです: return [(key,adict[key]] ) for key inkeys]
組み込みのsorted()メソッドを使用して並べ替える簡単な書き方もあります。
コードをコピー
コードは次のとおりです:>>> d = {'c':1,'e' :'5','b':7}
>>>>sorted(d.items())
[('b', 7), ('c', 1), (' e', '5')]
ただし、パフォーマンスは少し低下します。パフォーマンスが重要な場合は、ネイティブの list.sort() メソッドを使用することをお勧めします。
2 . 辞書 (dict) の値で並べ替えます [2]
コードをコピー
コードは次のとおりです:defsorted_dict(container,keys,reverse):
"""コンテナ内の対応する値に従ってソートされたキーリストを返す """
aux = [ (container[k], k) for k in キー]
aux.sort()
逆の場合: aux.reverse()
return [k for v, k in aux]
sorted() メソッドも使用できます同じ機能を実現するには:
コードをコピー
コードは次のとおりです: sorted(d.items(), key=lambda d) :d[1]、reverse=True)
3. 結論
上記のコードの分析を通じて、次の原則を大まかに要約できます:
* 辞書の並べ替えは、最終的には辞書のキーまたは値で構成されるリストの並べ替えに帰着します。
* リストの並べ替え、与え組み込みの list.sort() メソッドの使用を優先します