반응형

 

 

 

 

 

 

🌈 파이썬 딕셔너리(Dictionary) 정렬 하기 

파이썬에서 딕셔너리를 정렬하기 위한 가장 쉬운 방법은 sorted 메서드를 사용하는 것이다.

 

 

 

 

1️⃣ Key 기준 정렬

 

◾ Case 1 : Key를 오름차순하여 Key만 리스트로 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic)
print(dic) #['a', 'b', 'c', 'd', 'e']

위와 같이 아무런 옵션 없이 sorted 했을 경우 Key만을 정렬한 리스트를 반환한다. 

 

 

◾ Case 2 : Key를 오름차순하여 튜플 형태로 (Key, Value) 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items())
print(dic) #[('a', 3), ('b', 5), ('c', 1), ('d', 2), ('e', 1)]

이 경우에는 items()라는 딕셔너리의 메서드를 사용하였다.

items() 메서드를 사용하면 딕셔너리의 키와 값의 쌍을 반환해준다.

또한 결과로 Key를 기준으로 정렬한 튜플이 담긴 리스트를 반환한다.

 

 

◾ Case 3 : Key를 내림차순하여 튜플 형태로 (Key, Value) 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), reverse = True)
print(dic) #[('e', 1), ('d', 2), ('c', 1), ('b', 5), ('a', 3)]

이 경우에는 reverse 옵션을 주어 Case2를 뒤집은 값을 반환한다.

 

 

 

 

2️⃣ Value 기준 정렬

 

◾ Case 1 : Value를 오름차순하여 튜플 형태로 (Key, Value) 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: x[1])
print(dic) # [('e', 1), ('c', 1), ('d', 2), ('a', 3), ('b', 5)]

이 경우에는 딕셔너리에 담겨있는 순서 그대로 value만을 정렬한 값을 반환한다.

 

 

◾ Case 2 : Value를 오름차순 후, Key를 오름차순하여 튜플 형태로 (Key, Value) 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: (x[1], x[0]))
print(dic) # [('c', 1), ('e', 1), ('d', 2), ('a', 3), ('b', 5)]

이 경우에는 value를 기준으로 정렬한 후 다시 key를 기준으로 정렬한 값을 반환한다.

reverse 옵션을 줄 경우 case2의 결과를 뒤집은 값을 반환한다.

 

 

◾ Case 3 : Value를 내림차순 후, Key를 오름차순하여 튜플 형태로 (Key, Value) 반환

dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: (-x[1], x[0]))
print(dic) #[('b', 5), ('a', 3), ('d', 2), ('c', 1), ('e', 1)]

이 경우에는 value를 기준으로 역순으로 정렬한 후 다시 key를 기준으로 정렬한 값을 반환한다.

reverse 옵션을 줄 경우 case2의 결과를 뒤집은 값을 반환하며 case1의 결과와 같다.

 

 

 

 

 

 

 

 

📌 참고사이트

https://stackoverflow.com/questions/15371691/how-to-sort-a-dictionary-by-value-desc-then-by-key-asc

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기