[Python] 여러 key 값으로 정렬 (tuple 의 비교)

2021. 6. 30. 05:19Python

 

다음과 같은 이차원 list가 있다.

각 nested list의 리스트의 알파벳 순으로 정렬하되, 알파벳이 같은 경우에는 그 뒤의 숫자 순으로 정렬을 하고자 한다.

 

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

>>  [['a', 3], ['a', 1], ['b', 2], ['c', 1]] 

알파벳 순으로는 정렬이 되었지만, ['a', 3] 과 ['a', 1] 의 비교가 이루어지지 않은 상황!

 

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

>> [['a', 1], ['a', 3], ['b', 2], ['c', 1]]

key 로 이용되는 lambda 함수에서 (alpha, num) 순으로 tuple 을 리턴하도록 하면 된다!

tuple 간의 비교는, 각각의 첫번째 요소부터 순서대로 이루어지기 때문에

 

첫 번째 요소에서 대소가 결정되면 더 이상 비교를 진행하지 않고,

같은 경우에는 다음 요소부터 순서대로 다시 비교하기 때문!