123

次のリストのリストを、個々のリストの 4 番目の要素 (整数) で並べ替えたいと思います。

unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]

これどうやってするの?ありがとうございました!

4

2 に答える 2

211
unsorted_list.sort(key=lambda x: x[3])
于 2013-07-09T18:09:01.370 に答える
69

次のように使用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']]

は各内部リストの 4 番目のlambda要素を返し、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']]
于 2013-07-09T18:09:15.747 に答える