2017-08-11 13 views
0

現在のリストのセクション:私は、リストの2番目の列で順番にそれを並べ替えることができますが、私は、ソートして助けを必要とする:[['Magneto', 0, 'Insignificantly Evil'], ['Mystique', 0, 'Insignificantly Evil'], ['Mr. Sinister', 2, 'Cautiously Evil']]ソートリストの部分と別の

私は上記のコードを持っています2番目の列が同じ場合は、最初の列を使用します。したがって、上記のリストの正しい順序は次のとおりです。

このリストは、最初の列で区切られた番号(最高位から最下位)でソートされる必要があります(辞書順)。

最終リスト:!

[ 
    ('Mr. Sinister', 2, 'Cautiously Evil'), 
    ('Magneto', 0, 'Insignificantly Evil'), 
    ('Mystique', 0, 'Insignificantly Evil') 
]) 

最初のものは2のように、それは優先順位を取得しているとして、最初の列の一部は、アルファベット順にソートされているかだけに注目してください!

とにかく形や形を入れてください。

+0

あなたはコンパレータ機能を使用します。https://stackoverflow.com/questions/12749398/using-a-comparator-function-to-sort – Teo

+0

投稿者がどの列かを明確にしたい場合があります – bendl

+0

はい、見つかりましたリストの2つのセクションですが、私はそれらの2つのセクションだけをソートしようとしています。それも可能ですか? –

答えて

0

は、私はあなたがpython 3.xを使用しているためlistにこれを変換する必要がありますと思いますが、これは動作します:

a = [['Magneto', 0, 'Insignificantly Evil'], ['Mystique', 0, 'Insignificantly Evil'], ['Mr. Sinister', 2, 'Cautiously Evil']] 
sorted(a, key=lambda x: (-x[1], x[0])) 
#[['Mr. Sinister', 2, 'Cautiously Evil'], 
# ['Magneto', 0, 'Insignificantly Evil'], 
# ['Mystique', 0, 'Insignificantly Evil']] 

lambdaは、パラメータxを取り、リターンが負の第二要素と第一要素でタプル匿名関数でありますそのまま。

ソートは最初に、次に返されたタプルの2番目の要素によって行われます。

デフォルトの並べ替えが昇順になっているため、ネガティブが最初に表示されます。

+0

こんにちは、ラムダの部分を説明してください:あなたはどのようにして一度に負のxと何か他のものを並べ替えるのですか? –

+0

また、xは定義されていません。どのように動作しますか? –

+0

またelse文が必要ない場合 –