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 값을 지정할 수 있는 것이다. 

반응형
Comments