파이썬/기본 문법

[Python] 이중 정렬하기

유자차H 2022. 5. 7. 16:27
반응형

이중 정렬이라고 표현을 했는데

2가지 항목으로 정렬을 하는 방법과 2가지 항목을 다른 정렬 방법으로 정렬하는 방법을 알려 드리겠습니다.

 

 

데이터 요소 기준으로 정렬

=> 요소1 기준으로 오름차순 후 동일한 것이 있다면 요소2 기준으로 오름차순

sorted(정렬할 리스트, key=lambda x : (정렬할 요소1, 정렬할 요소2))

data = [(1,"d"), (2,"c"), (3,"b"), (1,"a"), (3,"d"), (1,"f")]
res = sorted(data, key=lambda x : (data[0], data[1]))

# 출력결과 : [(1,"a"), (1,"d"), (1,"f"), (2,"c"), (3,"b"), (3,"d")]

 

정렬이 서로 다르게 정렬이 해야할 때

=> 요소 1 기준으로 오름차순, 요소 2 기준으로 내림차순

sorted(정렬할 리스트, key=lambda x : (정렬할 요소1, -정렬할 요소2)) 

정렬할 요소에 "-" 기호를 붙여주면 정렬이 반대로 됩니다.

data = [(1,"d"), (2,"c"), (3,"b"), (1,"a"), (3,"d"), (1,"f")]
res = sorted(data, key=lambda x : (data[0], -data[1]))

# 출력결과 : [(1,"f"), (1,"d"), (1,"a"), (2,"c"), (3,"d"), (3,"b")]
반응형