2016-05-14 8 views
1

私はファイル上でいくつかの操作を実行しようとしており、その行をリストに変換しようとしています。しかし、整数値は文字列としても取られます内側のリストの特定のインデックスによるリストの並べ替え

l1 = [['test', 'hello', '60,'], ['why', 'to', '500,'], ['my', 'choice', '20,']] 

このため、これらの整数値に基づいてリストのリストをソートすることはできません。

list[2]の値をすべて整数に変換し、それに基づいて外側のリストをソートする方法はありますか?または、上のリストの整数を使ってこのリストをソートすることができる他の方法。

[['my', 'choice', '20,'], ['test', 'hello', '60,'], ['why', 'to', '500,']] 

答えて

1

ソートするときだけで整数に最後の要素を変換するために、カスタムの並べ替えキーを使用します:

sorted(l1, key=lambda l: int(l[2].rstrip(','))) 

key

意図した結果は、ソートされたリストの出力として表示されるはずであり、リスト内の各要素に対してソートする値を生成するために使用されます。したがって、各要素に対してlambda関数が呼び出され、上記のコードはl[2]の値を抽出し、整数に変換します。 str.rstrip()コールは、最初に末尾のカンマを削除します。

デモ:

>>> l1 = [['test', 'hello', '60,'], ['why', 'to', '500,'], ['my', 'choice', '20,']] 
>>> sorted(l1, key=lambda l: int(l[2].rstrip(','))) 
[['my', 'choice', '20,'], ['test', 'hello', '60,'], ['why', 'to', '500,']] 
+0

どうもありがとう、それは動作します:) // 1つの以上のクエリ、今、このソート降順ために何をすべきか、昇順でリストをソート? – Zoro99

+0

@ Zoro99: 'reverse = True'を' sorted() '呼び出しに追加します。 –

+0

awsome ..もう一度ありがとう! – Zoro99

関連する問題