본문 바로가기
  • 시 쓰는 개발자
프로그래밍 문법/Python 문법

2차원 리스트 정렬하기

by poetDeveloper 2024. 3. 7.

2차원 list 정렬

기본적으로는 정렬은 lambda를 사용해서 정렬을 한다. 그러나 2차원 배열 lst에 대해 lst.sort()라고 하면, lambda를 안써도 디폴트로 x좌표에 대해 오름차순 정렬하고, 값이 같으면 y좌표에 대해 다시 오름차순으로 정렬해준다.

Ex. 이런식으로 2차원 리스트 있다고 가정. [ [2, 1], [3, 4], [1, 2], [1, 3], [3, 2] ] 결과적으로 저 5개 덩어리는 각각이 한몸이라 x기준으로 정렬하든 y기준으로 정렬하든 같이 움직임.

array.sort(key=lambda x : x[0]) # x좌표 기준으로 정렬, y좌표 그대로 둠
array.sort(key=lambda x : x[1]) # y좌표 기준으로 정렬, x좌표 그대로 둠
array.sort(key=lambda x: (x[0], -x[1])) # x좌표 기준으로 정렬, x값이 동일한 값이면 y좌표에 대해 내림차순,
# 만약 마이너스 없이 그냥 x[1]이었으면 x[0]로 먼저 정렬하고 x[1]을 기준으로 해서 다시 정렬하는 것

▶ 표현은 x좌표 y좌표를 "그대로 둠"이라고 했지만, 당연히 그렇다고 해서 [2,1]에서 1만 따로 나와 정렬되는 것이 아니다. 한몸으로 움직이되, 한쪽에 대해 정렬하면 다른 한쪽은 정렬에 대해 관여하지 않는다는 것이다.

 

딕셔너리를 이용해 정렬하기

dictionary = { 2: 1, 3: 4, 5: 2, 1: 3, 4: 1}
x = sorted(dictionary.items(), key=lambda x : x[0])  # key에 대해서만 정렬함
y = sorted(dictionary.items(), key=lambda x : x[1])  # value에 대해서만 정렬함
print(x)
print(y)

<출력>

[(1, 3), (2, 1), (3, 4), (4, 1), (5, 2)]
[(2, 1), (4, 1), (5, 2), (1, 3), (3, 4)]

'프로그래밍 문법 > Python 문법' 카테고리의 다른 글

파이썬 슬라이싱  (0) 2024.03.07
dictionary에서 key 다루기  (0) 2024.03.07
문자열 replace  (1) 2024.03.07
숫자인 숫자, 문자인 숫자  (0) 2024.03.07
split()과 split("")의 차이점  (1) 2024.03.07