CODING TEST/memo
sort | sorted
마이구미2
2021. 7. 20. 16:42
sort | sorted
sort: 리스트를 정렬된 상태로 변경 (리스트만을 위한 메소드)
sorted: 이터러블 객체로부터 정렬된 리스트 생성 (내장 함수)
## sort
ls = [4, 2, 3, 5, 1]
ls.sort()
ls
#result: [1, 2, 3, 4, 5]
## sorted
ls = [3, 2, 5, 1, 4]
sorted(ls)
#result: [1, 2, 3, 4, 5]
ls
#result: [3, 2, 5, 1, 4]
sorted 의 key 매개변수
객체의 데이터 중 특정 데이터를 기준으로 정렬하기 위해
key 매개변수로 각 요소에 대하여 적용되는 함수 지정 가능
ls = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]
## 매개변수 없는 경우, 리스트 아이템의 각 요소 순서대로 정렬
sorted(ls)
#result: [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
## key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하여 순서대로 정렬
# 비교 함수를 통해 비교할 아이템의 요소 반환
# 아래의 예시에서는 익명 함수(lambda) 사용
sorted(ls, key = lambda x : x[0])
#result: [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
sorted(ls, key = lambda x : x[1])
#result: [(3, 0), (0, 1), (5, 1), (1, 2), (5, 2)]
# 비교할 아이템의 요소가 복수 개일경우, 튜플로 순서 지정
# - : 현재 정렬 기준과 반대
sorted(ls, key = lambda x : (x[0], -x[1]))
#result: [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
reverse 매개변수
## sort
ls = [4, 2, 3, 5, 1]
ls.sort(reverse = True)
ls
#result: [5, 4, 3, 2, 1]
## sorted
ls = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]
sorted(ls, key = lambda x : x[1], reverse = True)
#result: [(1, 2), (5, 2), (0, 1), (5, 1), (3, 0)]
sorted(ls, key = lambda x : (-x[0], x[1]), reverse = True)
#result: [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
sorted 를 이용한 dictionary 정렬
di = {'d':5, 'c': 1, 'e': 2, 'a': 4, 'b': 3}
## key 기준 정렬
sorted(di)
#result: ['a', 'b', 'c', 'd', 'e']
sorted(di.keys())
#result: ['a', 'b', 'c', 'd', 'e']
sorted(di.items())
#result: [('a', 4), ('b', 3), ('c', 1), ('d', 5), ('e', 2)]
## value 기준 정렬
sorted(di, key = lambda x : di[x])
#result: ['c', 'e', 'b', 'a', 'd']
sorted(di.items(), key = lambda x : x[1])
#result: [('c', 1), ('e', 2), ('b', 3), ('a', 4), ('d', 5)]
dict(sorted(di.items(), key = lambda x : x[1]))
#result: {'c': 1, 'e': 2, 'b': 3, 'a': 4, 'd': 5}