sort() sorted()
https://this-programmer.tistory.com/395
sort() 메소드 : 리스트만을 위한
- 리스트를 정렬된 상태로 변경
- 기존리스트 없어짐
myList = [3, 1, 4, 5, 2] myList.sort() # None myList # [1, 2, 3, 4, 5]
sorted() 내장함수 : iterable객체
- Iterable객체로부터 정렬된 리스트를 생성
- (기존의 리스트 변경없이) 정렬된 새로운 리스트를 반환
myList = [3, 1, 4, 5, 2] sorted(myList) # [1, 2, 3, 4, 5] myList # [3, 1, 4, 5, 2]
sorted(정렬할 데이터) sorted(정렬할 데이터, reverse 파라미터=True/False) sorted(정렬할 데이터, key 파라미터) sorted(정렬할 데이터, key 파라미터, reverse 파라미터)
key 매개변수
myDict = {3:'D', 2:'B', 5:'B', 4:'E', 1:'A'} sorted(myDict) sorted(myDict.keys()) # [1, 2, 3, 4, 5]
myDict = {3:'D', 2:'B', 5:'B', 4:'E', 1:'A'} resultItems = sorted(myDict.items()) #resultItems = sorted(myDict.items(), key=lambda item: item[0]) import operator #resultItems = sorted(myDict.items(), key=operator.itemgetter(0)) dict(resultItems) dict(sorted(myDict.items())) # {1: 'A', 2: 'B', 3: 'D', 4: 'E', 5: 'B'} def sort_key(k_v): return k_v[1] dict( sorted(myDict.items(), key=sort_key) ) # {1: 'A', 2: 'B', 5: 'B', 3: 'D', 4: 'E'} from collections import defaultdict res = defaultdict(list) for (k,v) in resultItems: res[k].append(v) dict(res) # {1: ['A'], 2: ['B'], 3: ['D'], 4: ['E'], 5: ['B']}
오름차순 정렬과 내림차순 정렬
list.sort()와 내장함수 sorted()는 모두 reverse 매개변수를 받는다. reverse 변수는 부울형으로 True 이면 내림차순이 된다. 위의 예제에서 내림차순으로 정렬하려면 다음과 같이 한다.
>>> sorted(students, key=lambda student: student[2], reverse=True) [('홍길동', 3.9, 2016303), ('김철수', 3.0, 2016302), ('최자영', 4.3, 2016301)]
리스트를 정렬할 때 사용하는 sorted() 함수입니다.
sorted() 함수는 리스트를 정렬하여 새로운 리스트로 만드는 내장 함수입니다. sorted() 함수는 매개변수로 key 함수를 사용할 수 있는데, key 매개 변수의 값은 단일 인자를 취하고 정렬 목적으로 사용할 키를 반환하여야 합니다.
정렬의 기준이 되는 key에 람다 표현식을 이용할 수가 있습니다.
예를 들어, [과일 이름, 개수]를 요소로 가지고 있는 이차원 리스트를 과일 이름으로 정렬하여 봅시다.
만약 람다 표현식이 없다면 어떻게 구현할 수 있을까요?
이럴 경우 간편하게 사용할 수 있는 것이 바로 람다입니다.
아래 예제에서 x[0]은 과일 이름을 기준으로 정렬하기 위한 것이고, x[1]로 설정을 변경하면 과일 이름 대신 리스트의 두 번째 요소인 개수로 정렬됩니다.
지금까지 알고 있으면 쉽고 간단한 파이썬의 람다의 개념에 대해서 알아보았습니다.