次のリストのリストを、個々のリストの4番目の要素(整数)でソートします。
unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
これどうやってするの?ありがとうございました!
unsorted_list.sort(key=lambda x: x[3])
次のように sorted()
をkey
とともに使用します-
>>> unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
>>> sorted(unsorted_list, key = lambda x: int(x[3]))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]
lambda
は各内部リストの4番目の要素を返し、sorted
関数はそれを使用してそれらのリストをソートします。これは、リストでint(elem)
が失敗しないことを前提としています。
またはitemgetter
を使用します(Ashwiniのコメントが指摘したように、数字の文字列表現がある場合、このメソッドは機能しません。2桁以上の数字ではどこかで失敗するからです)
>>> from operator import itemgetter
>>> sorted(unsorted_list, key = itemgetter(3))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]