2017-10-03 19 views
0

並べ替え:xの値が等しい場合、私はyの値に基づいて昇順に要素をソートしたいとyの値が等しい場合、したいPythonの - 私はリストの下のように持っているリスト

list1 = [['4.00', '7.00'], ['4.00', '4.00'], ['4.00', '1.00']] 
list2 = [['4.00', '7.00'], ['1.00', '7.00'], ['6.00', '7.00']] 

ソート以下のようなxの値に基づいて:

sorted list1 = [['4.00', '1.00'], ['4.00', '4.00'], ['4.00', '7.00']] 
sorted list2 = [['1.00', '7.00'], ['4.00', '7.00'], ['6.00', '7.00']] 

私はsorted()を使用しようとしました。しかし、コードが同じであるかどうかを調べるためにxの値を比較し、それに基づいてsorted()にキーを与えると、コードが複雑になります。私はより良い方法でそれをすることができますか?

+0

リストを比較するのと同じ方法でリストを比較しているのではないですか? – kindall

+0

ええ。 sorted()関数に与えられたキーのリスト内のxまたはyが等しいかどうかを調べるための条件を指定することで、簡単な方法があるかどうかを知りたいです。 – buddingengineer

+1

'y'値のチェックポイントに達した場合は、彼らはまだ同じです、どうして 'x'に戻って何が変わるのですか? 'x'が等しければ' y'をテストするだけなので、 'x'に戻るのは無意味です。 – ShadowRanger

答えて

2

sortedすでにお望みのことをしています。比較はが辞書編集的に行われます。不等要素が見つかるまで要素を左から右に比較します。その時点で、比較の結果はその最初の等しくない要素の比較です。例えば、無key機能がすべてで、あなたのリストは、あなたが期待するようなものとして:list1場合

>>> list1 = [['4.00', '7.00'], ['4.00', '4.00'], ['4.00', '1.00']] 
>>> list2 = [['4.00', '7.00'], ['1.00', '7.00'], ['6.00', '7.00']] 
>>> sorted(list1) 
[['4.00', '1.00'], ['4.00', '4.00'], ['4.00', '7.00']] 
>>> sorted(list2) 
[['1.00', '7.00'], ['4.00', '7.00'], ['6.00', '7.00']] 

が、それは正しく、彼らは同じだと判断し、第二の値でソートし、最初の値を比較し、 list2の場合、最初の値はすべて異なるので、2番目の値は決してチェックされません。

関連する問題