2022-07-02
사실 그 전에는 sort()를 통해 그냥 바로 갖고 있는 리스트에 대한 정렬을 진행해왔지만 sort()함수 자체는 리스트에 대한 것만 정렬을 해준다는 것을 간과 하고 있었다.
즉 다른 iterable한 자료형에 대해서는 sort()를 바로 호출해서 사용할 수 없다는 뜻!
그럼 sorted()를 쓰면 기본적으로 알아두면 좋은 것들
- key 옵션 (key 파라미터)sorted 함수의 key 파라미터는 어떤 것을 기준으로 정렬할 것인가? 에 대한 기준입니다.즉, key 값을 기준으로 비교를 하여 정렬을 하겠다는 것인데, 이것을 정해 줄 수 있는 파라미터입니다.sorted( ~~ , key=뭐뭐)로 입력하게 되면 해당 키를 기준으로 정렬하여 반환합니다.
- reverse 옵션 (reverse 파라미터)해당 파라미터를 이용하면 오름차순으로 정렬할지 내림차순으로 정렬할지 정할 수 있습니다.디폴트로는 reverse=False로 오름차순으로 정렬이 됩니다.sorted( ~~ , reverse=True)로 입력하게 되면 내림차순으로 정렬하여 반환합니다.
출처:https://blockdmask.tistory.com/466
딕셔너리에서는 기본 키 값으로 오름차순을 정렬 하되 딕셔너리가 가지고 있는 키와 밸류 쌍에 대하여 동시 진행을 위해서는
d={a:1,b:2}
sorted(d.itmes())
#.items()를 안 붙이면 단순 키 값만 반환됨
#.keys()를 썼을때랑 같음
하지만 sorted()의 기본반환은 리스트이기에 튜플을 원소로 가지고 있는 리스트로 원한다면 다시 dict() 자료형 변환해두좋다
또한 sorted()를 쓴다면 labmda에 익숙해야함!
키값에 정렬기준이 필요할 때
d={a:1,b:1}
sorted(d,key=lambda x:x[1])
이렇게 lambda x 이후에 대한 값이 정렬의 기준이 된다
또한 sorted()를 할때 특히 딕셔너리 같은케이스에서
우선 키값으로 정렬로 하고 그 다음에 밸류값으로 반대로 내림차순 정렬을 하고싶은 것 처럼 동시에 두 개의 기준을 가지고 정렬을 시킬 수 있다.즉 나열한 순서대로 우선순위가 생김
d={a:1,b:1}
sorted(d,key=lambda x:(x[0],-x[1])
#여기서 보면 첫 번째 키로 오름차순 정렬
#만약 그러고 나서 같다면 두번째 밸류로 내림차순 정렬하되
#-를 붙여 내림차순이 가능해짐
참고로 문자열을 정렬할때는
각 맨앞글자부터 알파벳순으로 정렬된다!
사실 엄청 특별한 건 아니지만 두 개의 리스트가 있다면 같은 인덱스끼리 추출해서 비교해서 써먹을 때 좋을 듯 하다
<zip함수>
zip함수를 통해 두개의 리스트에서 같은 인덱스끼리 묶어줌
zip([1,2,3],[4,5,6])
▶[1,4],[2,5],[3,6]
대체로 문제에서는 이렇게 많이 썼던 것 같다
for x,y in zip(두개의 리스트):
if x<y:
~~