파이썬은 C++이나 자바와 다르게 객체를 상속받아 정렬 조건을 설정할 필요가 없다.
sorted 함수에 람다식을 사용하여 원하는 조건에 맞게 다중 정렬 할 수 있다.
알고리즘 풀이에 그리디나, 정렬 문제에 자주 사용하는데 사용할 때 마다 헷갈리는 경우가 있어서 정리해놓으려 한다!
result = [["alice",'B',87],
["tom",'C',70],
["hooni",'A',100],
["chulsoo",'C',72],
["masao",'B',88],
["sato",'A',100],]
다음과 같이 이름, 성적, 점수 로 나열된 배열이 있다고 하자.
result = sorted(result, key = lambda x: [1순위 조건, 2순위 조건, ...])
먼저 람다식의 기본 문법은 다음과같다.
람다식 내에 우선순위 조건 순서대로 차례로 나열하면 된다.
result = sorted(result, key = lambda x: [x[1], -x[2], x[0]])
# 결과 값 print(result)
['hooni', 'A', 100]
['sato', 'A', 100]
['masao', 'B', 88]
['alice', 'B', 87]
['chulsoo', 'C', 72]
['tom', 'C', 70]
만약 성적순 -> 점수순(내림차순) -> 이름순 정렬이 필요하다면 다음과 같이 작성하면된다.
의미하는 뜻은
1번 인덱스의 열에 오름 차순 정렬 -> 이 조건에 동등하다면 2번 인덱스 열을 내림차순 정렬 -> 이 조건이 동등하다면 0번 인덱스 열을 오름차순 정렬 이라는 뜻이다.
(-) 부호를 통해 내림차순, 오름차순을 결정할 수 있고,
추가적으로 len(x[1])과 같은 함수를 사용해서 문자열이나 배열의 길이순으로 정렬이 가능하다.
'Study > Python' 카테고리의 다른 글
[Python] 파이썬 코딩테스트 시간 단축하기 (0) | 2023.01.31 |
---|---|
[Selenium] 페이지를 스크롤하며 무한 크롤링 하기 (0) | 2023.01.27 |
Selenium을 활용한 동적 크롤링 링크 주소 가져오기 (0) | 2023.01.26 |
Selenium을 활용한 네이버 쇼핑 품목 동적 크롤링 (0) | 2023.01.25 |
[mac] m1 웹 크롤링 Selenium, Chromedriver 설치하기 (1) | 2023.01.22 |