반응형
참고자료는 여기입니다.
python의 리스트는 .sort() 메소드를 이용해서 정렬할 수 있다. 단, 이 때의 정렬은 제자리 정렬로 호출한 원본 리스트의 내부 원소들의 순서를 바꾸게 된다. 실제로 메모리 사용량을 극히 제한하는 특수한 상황이 아니면 제자리 정렬보다는 sorted 함수를 이용하는 것이 더 안전하다.
1. 역순으로 정렬하기
sort함수나 sorted 함수에서 reverse 파라미터에 True값을 주면 가능하다.
2. 정렬 조건 적용하기
정렬하고자 하는 연속열이 단순히 숫자값이나 문자열이라면 sorted 함수는 크기순 혹은 사전순으로 정렬한다. 별도의 정렬기준을 사용해야 할 필요가 있을 때는 key 파라미터를 사용하여 정렬 기준이 되는 값을 정할 수 있다.
예를 들어, 어떤 학생들의 리스트를 수학 점수가 높은 순으로 정렬하고 싶다면
names_sorted_by_math = [x.name for x in sorted(student, key = lambda x: x.math_score, reverse = True)]
다음과 같이 사용할 수 있다.
3. 두 개 이상의 정렬 조건 사용하기
key 함수의 리턴값이 (첫번째 기준, 두번째 기준) 형식의 튜플이면 된다.
둘 다 같은 정순 혹은 역순이면 상관 없지만 둘의 정렬 순서가 반대일 경우 예시를 들어보겠다.
sorted(sorted(a, key = lambda x: x[0]), key = lambda x: x[1], reverse= True)
x[0] 은 정순으로, x[1]은 역순으로 정렬이 가능하다.
백준 10814번) 나이순, 나이가 동일하다면 이름순으로 정렬하기 예제
n = int(input())
people = [0] * (n+1)
for i in range(1,n+1):
age, name = input().split(" ")
people[i] = {'idx': i,'age': int(age), 'name': name}
a = sorted(people[1:], key = lambda x:(x['age'], x['idx']))
#print(people)
for i in range(len(a)):
print(a[i]['age'], a[i]['name'])
반응형
'프로그래밍 언어 > Python 공부' 카테고리의 다른 글
defaultdict (0) | 2019.09.02 |
---|---|
Python 자료형 공부 - dictionary (0) | 2019.08.19 |
Python 자료형 공부 2 - array (0) | 2019.08.19 |
Python 입력값 저장하기 (0) | 2019.08.14 |
Python 자료구조 공부 - List(Stack, Queue) (0) | 2019.08.14 |