KEEP GOING
[python] 딕셔너리 정렬하기 (key/value 기준으로 sorted(), lambda, reverse 사용) 본문
code review/sort
[python] 딕셔너리 정렬하기 (key/value 기준으로 sorted(), lambda, reverse 사용)
jmHan 2021. 12. 28. 21:54반응형
dic = {'pop': 3100, 'classic': 1450, 'trot':620}
해당 딕셔너리에 대해 key 값과 value 값을 기준으로 딕셔너리를 정렬하는 방법을 살펴보고자 한다.
1. key값을 기준으로 오름차순으로 정렬하여 리스트 반환하기
오름차순은 디폴트값이며 내림차순으로 정렬하고 싶은 경우에는 sorted() 내에 매개변수로 reverse=True 값을 넣어준다.
# key 값을 기준으로 오름차순 정렬하여 리스트 출력
print(sorted(dic))
# key 값을 기준으로 내림차순 정렬한 리스트 출력
print(sorted(dic, reverse=True))
2. key 값을 기준으로 오름차순으로 정렬한 딕셔너리 생성하기
# key 값을 기준으로 정렬된 (key,value) 원소쌍을 가진 리스트 출력
print(sorted(dic.items()))
# key 값을 기준을 정렬된 딕셔너리 생성
dic = dict(sorted(dic.items()))
print(dic)
dic.items()에 대해 sorted()로 정렬할 경우 {key:value} 형태의 딕셔너리 원소를 (key, value) 튜플 형태의 원소로 만들어 리스트를 반환해준다.
sorted에 의해 정렬된 리스트에 dict() 메소드를 사용하면 다시 key 값에 의해 정렬된 딕셔너리를 얻을 수 있게 된다.
[(key1, value1), .. (keyN, valueN)] -> {key1: value1, ... keyN; valueN}
해당 문제에서 key 값의 자료형은 문자형이기에 알파벳 순으로 정렬된 것을 알 수 있다.
3. value 값을 기준으로 오름차순 정렬한 딕셔너리 생성하기
# value 값을 기준으로 오름차순 정렬하여 (k, v) 리스트 반환
print(sorted(dic.items(), key=lambda x:x[1]))
# 위 값을 딕셔너리로 변환
print(dict(sorted(dic.items(), key=lambda x:x[1])))
# value 값을 기준으로 오름차순 정렬
print(sorted(dic,key=lambda x:dic[x]))
sorted() 메소드의 key 매개변수에 익명함수인 lambda 함수를 사용하면 value 값을 기준으로 데이터를 정렬할 수 있다.
dic.items()의 경우 (key, value) 튜플 형태의 원소를 제공하기에 lambda에서 x[1]와 같은 방식으로 value 값을 지정할 수 있는 것이다.
반응형
'code review > sort' 카테고리의 다른 글
[python] 이것이코딩테스트다 : 커리큘럼 (위상정렬) (0) | 2022.01.10 |
---|---|
[python] 프로그래머스 42579번 : 베스트 앨범 (0) | 2021.12.29 |
[python] 프로그래머스 42746번 : 가장 큰 수 (0) | 2021.12.27 |
백준 1181번 : 단어 정렬 (list(set()) 처리) (0) | 2021.11.10 |
백준 1715번 : 카드 정렬하기 (heap) (0) | 2021.11.09 |
Comments