LoginSignup
0
0

More than 3 years have passed since last update.

[Python3]配列の配列をソートする

Last updated at Posted at 2019-08-18

環境

Python3.4で実行した。(3.7とかでも変わらないはず)

二つのやり方

二つのやり方がある。Operatorモジュールの方が高速。

lambdaを使う

A = [[2, 'a'], [1, 'c'], [3, 'b']]

A.sort(key=lambda x: x[0])
print(A)
# [[1, 'c'], [2, 'a'], [3, 'b']]

A.sort(key=lambda x: x[1])
print(A)
# [[2, 'a'], [3, 'b'], [1, 'c']]

Operatorモジュールを使う


from operator import itemgetter

A = [[2, 'a'], [1, 'c'], [3, 'b']]

A.sort(key=itemgetter(0))
print(A)
# [[1, 'c'], [2, 'a'], [3, 'b']]

A.sort(key=itemgetter(1))
print(A)
# [[2, 'a'], [3, 'b'], [1, 'c']]

昇順、降順を組み合わせたソート

一つ目の要素を降順にソートする。一つ目の要素の値が同じ場合は、二つ目の要素を昇順にソートする。

from operator import itemgetter

A = [[2, 'd'], [2, 'a'], [1, 'c'], [3, 'b']]
A.sort(key=itemgetter(1))
A.sort(key=itemgetter(0), reverse=True)
print(A)

# 実行結果:
# [[3, 'b'], [2, 'a'], [2, 'd'], [1, 'c']]

メモ

破壊的にソートさせたくない場合は、sortedを使う。

sorted(A, key=lambda x: x[0])

逆順で並べる。

A = [[2, 'a'], [1, 'c'], [3, 'b']]
A.sort(key=lambda x: x[0], reverse=True)
print(A)
# [[3, 'b'], [2, 'a'], [1, 'c']]
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0