はPythonドキュメントによると:
内蔵のソート()関数は安定であることが保証されます。ソートは、同等の要素の相対的な順序を変更しないことが保証されていれば安定しています。これは、複数回のソート(部門別ソート、給与グレードなど)に役立ちます。
ので、それを行うための簡単な方法は、ソート2パスをやってます。
sorted(theList, key = lambda x:x[1])
sorted(theList, key = lambda x:x[0], reverse = True)
それとも、本当にワンライナーをしたい場合、あなたはこれを行うことができます:
sorted(thisList, key = lambda x:x[0] * 26 - (ord(x[1]) - ord('a')), reverse = True)
を
この1つのライナーは、すべての文字が小文字であることを前提としています。それは、2つの連続する数字のそれぞれが1ではなく26のステップを持ち、a-zの文字が0〜25にマッピングされていることです。文字は昇順であるため、スケーリングされた数値から減算します。
このx[1]
は(もすなわち数)は範囲を持っていない場合、それは動作しませんので、ワンライナーは、ハッキングの一種である
このようなものをお探しですか? http://stackoverflow.com/questions/3979872/python-how-to-sort-a-complex-list-on-two-different-keys – idjaw