[Python] sort(key)를 이용한 Nested List 정렬하기

Surf in Data·2022년 5월 2일
0

python

목록 보기
11/15
post-thumbnail
post-custom-banner

key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하며 순서대로 정렬한다.

  • 오름차순 정렬 :
    👉 list.sort(key=lambda x:x[0])
  • 내림차순 정렬 :
    👉 list.sort(key=lambda x:-x[0])
  • 요소가 여러개일 경우에는 각 요소마다 정렬 기준을 정해줄 수 있다.
    👉 list.sort(key=lambda x: (x[0], -x[1])

[int, str] 에서 int를 기준으로 정렬하고 싶을 경우

test = [[10, "a"], [5, "d"], [30, "f"], [1, "b"]]
test.sort(key=lambda x: x[0])
print(test)
-------------------------------------------------------------------------
[[1, 'b'], [5, 'd'], [10, 'a'], [30, 'f']]

[int, str] 에서 str을 기준으로 정렬하고 싶을 경우

test = [[10, "a"], [5, "d"], [30, "f"], [1, "b"]]
test.sort(key=lambda x: x[1])
print(test)
-------------------------------------------------------------------------
[[10, 'a'], [1, 'b'], [5, 'd'], [30, 'f']]

다중 정렬 조건일경우

test = [("A", 18, 30) , ("F", 24, 100), ("T", 24, 2000),("Q",24,5000), ("B", 70, 5)]
test.sort(key = lambda x: (x[1], -x[2])) # x[1]이 x[2]보다 우선순위
print(array)
---------------------------------------------------------------------
[('A', 18, 30), ('Q', 24, 5000), ('T', 24, 2000), ('F', 24, 100), ('B', 70, 5)]
test = [("A", 18, 30) , ("F", 24, 100), ("T", 24, 2000),("Q",24,5000), ("B", 70, 5)]
test.sort(key = lambda x: (-x[2], x[1])) #x[2]이 x[1]보다 우선순위
print(array)
---------------------------------------------------------------------
[('Q', 24, 5000), ('T', 24, 2000), ('F', 24, 100), ('A', 18, 30), ('B', 70, 5)]
profile
study blog
post-custom-banner

0개의 댓글