2017-01-23 9 views
0

最初に、タプルのリストを並べ替えることに関して多くの質問があることに気付きましたが、私はこの特定の形式の質問リストのために。潜在的な繰り返しの質問のために、事前に謝罪していますが、これは簡単であると思います。リスト内の各タプルは1からなることPython - 複数の並べ替え項目に基づいたタプルのリストをソート

my_list = [(('G', 'J', 'I'), 1.0), (('E', 'H', 'F'), 1.0), (('F', 'H', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'I', 'G'), 0.8889), (('H', 'J', 'I'), 0.875)] 

注:3つの文字、及び2と長さ3の別のタプル:浮動小数点数を

はタプルのリストは、このとします。私のソートの目的はシンプルです:1番目のタプルのリストを浮動小数点数でソートし、2番目の浮動小数点数の中の任意の結び目を破り、長さ3のタプルの最初の文字でソートし、3番目の文字を長さ3のタプルの2番目の文字でソートします。所望の出力は次のようになります。

sorted_list = [(('E', 'H', 'F'), 1.0), (('G', 'J', 'I'), 1.0), (('F', 'H', 'G'), 0.8889), (('H', 'I', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'J', 'I'), 0.875)] 

この特定の例では、それは私の大きなデータセットではないが、最初の文字の絆を壊すために第二の手紙にソートして、表示されませんでした。

ありがとうございます!

+1

だから、あなたがフロートの降順でソートしたい、と昇順に? –

+0

[Python 3.3]複数のタプルリストを並べ替えることの可能な複製](http://stackoverflow.com/questions/23454961/python-複数のキーを持つタプルリストを並べ替える) – Prune

答えて

2

ここでそれを行うための一つの方法です:Pythonの3では

srt_lst = sorted(my_list, key=lambda (x, y): (-y, x)) #python 2 
print(srt_lst) 
# [(('E', 'H', 'F'), 1.0), (('G', 'J', 'I'), 1.0), (('F', 'H', 'G'), 0.8889), (('H', 'I', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'J', 'I'), 0.875)] 

、あなたがする必要があります:絆が、内側のタプルにソートすることによって壊れている間に最初のソートは、フロートの逆で行われますインデックス項目にアクセスし、並べ替えのためにそれらを使用するには、ラムダの単一のパラメータ:タプルの文字で

srt_lst = sorted(my_list, key=lambda tup: (-tup[1], tup[0])) 
+1

注: 'lambda 'のタプルアンパックはPython 3では機能しません。そうでなければ罰金。 –

+0

@tobias_k注目してくれてありがとう。彼らのPython 3タグには –

+0

がありませんでした - Python 2を使用して、最初の解決策が私のために適切にソートされたことを確認できます。 – Canovice

関連する問題