AngelPlayer`s Diary

딕셔너리를 만들고 이를 key 또는 value를 통해 정렬하는 방법을 알아보겠습니다.

 

 

dict_data = {'가나다': 4, '차카파': 1, '사아자': 2, '라마바': 3}

우선 정렬 대상이 될 딕셔너리를 하나 생성하였습니다.

key 값과 value 값을 각각 반대로 되도록(key가 우선순위가 높은 '가나다'의 value의 우선순위는 가장 낮은 4) 구성하였습니다.

 

 

key 값을 기준으로 정렬

간단하게 sorted()를 이용하여 정렬을 해보면 출력 값으로 key 값을 기준으로 오름차순 된 데이터를 확인할 수 있습니다.

key_sort = sorted(dict_data)
print(key_sort) # ['가나다', '라마바', '사아자', '차카파']

 

 

 

value 값을 기준으로 정렬

이번에는 value 값을 기준으로 정렬해보겠습니다.

sorted()에 key 속성을 lambda를 통해 지정합니다.

value_sort = sorted(dict_data, key=lambda x : dict_data[x])
print(value_sort) # ['차카파', '사아자', '라마바', '가나다']

 

 

 

key 값을 기준으로 정렬하여 딕셔너리 출력

한편 딕셔너리를 출력하고 싶거나 반대로 value 값만 출력하고 싶은 경우가 생길 수 있습니다.

이때는 .items()를 이용하여 정렬을 진행합니다.

dict_key_sort = dict(sorted(dict_data.items()))
print(dict_key_sort) # {'가나다': 4, '라마바': 3, '사아자': 2, '차카파': 1}

 

-> 여기서 dict으로 변환을 진행하였는데, 이를 제거하고 수행하면 튜플이 나옵니다.

dict_key_sort = sorted(dict_data.items())
print(dict_key_sort) # [('가나다', 4), ('라마바', 3), ('사아자', 2), ('차카파', 1)]

 

-> value 값만 사용하고 싶다면 .values()를 통해서 값을 추출하시면 됩니다.

dict_key_sort = dict(sorted(dict_data.items()))
print(dict_key_sort.values()) # dict_values([4, 3, 2, 1])

 

 

 

value를 기준으로 정렬하여 딕셔너리 출력

이번엔 value 값을 기준으로 딕셔너리를 정렬하여 출력해보도록 하겠습니다.

마찬가지로 lambda 식을 사용하게 되는데 이때는 items()로 인해 튜플로 변환된 상태이기 때문에, lambda식 역시 튜플에서 sort하는 형태를 사용하게 됩니다. (x의 1번 째 요소 == value)

dict_value_sort = dict(sorted(dict_data.items(), key=lambda x : x[1]))
print(dict_value_sort) # {'차카파': 1, '사아자': 2, '라마바': 3, '가나다': 4}

 

공유하기

facebook twitter kakaoTalk kakaostory naver band