Python sort by value in dictionary list

2021. 6. 8. 23:03프로그래밍 개발(Development)/Python

반응형

사전형 리스트 데이터에서 value 값으로 정렬을 하는 방법을 알아보자

아래와 같이 month와 day가 key인 사전형 리스트가 있다

datelist = [
	{ "month": 8, "day": 22	},
	{ "month": 8, "day": 30	},
	{ "month": 5, "day": 9	},
	{ "month": 9, "day": 15	},
    { "month": 9, "day": 29	},
	{ "month": 12, "day": 3	}
]

1. lambda를 이용한 정렬

- reverse 옵션을 추가할 경우 역정렬

- 'month' 정렬 후 'day' 정렬 시도

# 오름차순
result = sorted(datelist, key=lambda date: (date['month'], date['day']))

# 결과
{'day': 9, 'month': 5}
{'day': 22, 'month': 8}
{'day': 30, 'month': 8}
{'day': 15, 'month': 9}
{'day': 29, 'month': 9}
{'day': 3, 'month': 12}

# 내림차수
result = sorted(datelist, key=lambda date: (date['month'], date['day']), reverse=True)

#결과
{'day': 3, 'month': 12}
{'day': 29, 'month': 9}
{'day': 15, 'month': 9}
{'day': 30, 'month': 8}
{'day': 22, 'month': 8}
{'day': 9, 'month': 5}

2. itemgetter를 이용한 정렬(추천)

from opertor import itemgetter

# 오름차순
result = sorted(datelist, key=itemgetter('month', 'day'))

# 결과
{'day': 9, 'month': 5}
{'day': 22, 'month': 8}
{'day': 30, 'month': 8}
{'day': 15, 'month': 9}
{'day': 29, 'month': 9}
{'day': 3, 'month': 12}

# 내림차순
result = sorted(datelist, key=itemgetter('month', 'day'), reverse=True)

# 결과
{'day': 3, 'month': 12}
{'day': 29, 'month': 9}
{'day': 15, 'month': 9}
{'day': 30, 'month': 8}
{'day': 22, 'month': 8}
{'day': 9, 'month': 5}
반응형