본문 바로가기
컴퓨터관련 쪽지

[python] 두가지 기준으로 list 정렬하기

by 프들이 2021. 4. 1.
반응형

앞서서 python list를 내 원하는 우선순위로 정렬하기 위한 방법을 살펴보았다.

2021.03.30 - [컴퓨터관련 쪽지] - python list sorted 사용 시 내 마음대로 우선순위 정하기

 

python list sorted 사용 시 내 마음대로 우선 순위 정하기

기본적으로 python sort 에 대한 문서는 아래를 참고한다. docs.python.org/ko/3/howto/sorting.html 정렬 HOW TO — Python 3.9.2 문서 정렬 HOW TO 저자 Andrew Dalke와 Raymond Hettinger 배포 0.1 파이썬 리스..

phdeolee.tistory.com

이번에는 내가 원하는 정렬을 하는데 두가지 이상의 기준으로 정렬하는 방법을 알아보겠다.

위 메뉴얼에 보면 이미 있는 내용이다. 매뉴얼에서는 이 성질을 정렬 안정성이라고 부르고 있다.

정렬 안정성

이 말은 한 번 정렬된 리스트의 순서는 유지가 된다는 뜻이다.

예제를 보자

tar_list = [('서울', '목동', 30), ('서울', '신정동', 15), ('경기', '수원', 10), ('경기', '영통', 5)]

## 다중 기준으로 정렬할 때는 하위 우선순위부터 먼저 정렬을 한다.
## 위 예에서는 1순위 정렬기준: 시도, 2순위 정렬기준: 읍면동, 3순위 정렬기준: 숫자
## 우선순위의 역순인 숫자, 읍면동, 시도 순으로 정렬한다.

tar_list = sorted(tar_list, key=lambda x: x[2])
print(tar_list)
[('경기', '영통', 5), ('경기', '수원', 10), ('서울', '신정동', 15), ('서울', '목동', 30)]
tar_list = sorted(tar_list, key=lambda x: x[1])
print(tar_list)
[('서울', '목동', 30), ('경기', '수원', 10), ('서울', '신정동', 15), ('경기', '영통', 5)]
tar_list = sorted(tar_list, key=lambda x: x[0])
print(tar_list)
[('경기', '수원', 10), ('경기', '영통', 5), ('서울', '목동', 30), ('서울', '신정동', 15)]

위 예에서처럼 우선순위가 낮은 정렬 기준부터 사용해서 거꾸로 올라가면서 정렬하면 원하는 다중 기준으로 정렬하는 것이 구현이 된다.

왜냐하면 정렬 안정성이 있기 때문에 한번 정렬 된 것은 그 순서를 유지하고 있기 때문에 처음 정렬한 기준은 마지막까지 유지가 되는 것이다.

끝.

 

반응형

댓글