본문 바로가기
Computer Science/Python

Python 딕셔너리 정렬 (Key, Value 기준 sort)

by sohyunwriter 2022. 4. 9.

예제

mydict = {'d': 50, 'a': 20, 'b': 30, 'e': 10, 'c': 30}

 

 

1. Key를 기준으로 정렬 (오름차순)

mydict_sorted = sorted(mydict.items())
print(mydict_sorted)
[('a', 20), ('b', 30), ('c', 30), ('d', 50), ('e', 10)]

 

2. Key를 기준으로 정렬 (내림차순)

mydict_sorted = sorted(mydict.items(), key=lambda x:x[0], reverse=True)
print(mydict_sorted)
[('e', 10), ('d', 50), ('c', 30), ('b', 30), ('a', 20)]

 

3. Value를 기준으로 정렬 (오름차순)

mydict_sorted = sorted(mydict.items(), key=lambda x:x[1])
print(mydict_sorted)
[('e', 10), ('a', 20), ('b', 30), ('c', 30), ('d', 50)]

 

4. Value를 기준으로 정렬 (내림차순)

mydict_sorted = sorted(mydict.items(), key=lambda x:x[1], reverse=True)
print(mydict_sorted)
[('d', 50), ('b', 30), ('c', 30), ('a', 20), ('e', 10)]

 

5. Value 기준으로 오름차순 정렬하되, Value가 같을 경우 Key는 알파벳 순서대로 출력

mydict_sorted = sorted(mydict.items(), key=lambda x:(x[1], x[0]))
print(mydict_sorted)
[('e', 10), ('a', 20), ('b', 30), ('c', 30), ('d', 50)]

 

 

복잡한 예제

mydict2 = {'d': (50, 10), 'a': (20, 30), 'b': (30, 30), 'e': (10, 20), 'c': (10, 10)}

 

6. Value 기준으로 정렬 (오름차순)

mydict2_sorted = sorted(mydict2.items(), key=lambda x:(x[1][0], x[1][1]))
print(mydict2_sorted)
[('c', (10, 10)), ('e', (10, 20)), ('a', (20, 30)), ('b', (30, 30)), ('d', (50, 10))]