Python에서 날짜 형식의 문자열 목록을 sort() 함수로 정렬하려면, 단순한 문자열 비교가 아닌 실제 날짜 기준으로 정렬해야 합니다. 이를 위해서는 각 날짜 문자열을 datetime 객체로 변환한 뒤 정렬하는 것이 가장 확실한 방법입니다.
sort() 함수의 key 매개변수에 람다(lambda) 함수를 지정하면 됩니다. 이 람다 함수는 각 날짜 문자열을 datetime 객체로 만들어 주며, 정렬은 이 객체를 기준으로 수행됩니다.
예제 코드
from datetime import datetime my_dates = ['5-Nov-18', '25-Mar-17', '1-Nov-18', '7-Mar-17'] my_dates.sort(key=lambda date: datetime.strptime(date, "%d-%b-%y")) print(my_dates)
실행 결과
위 코드를 실행하면 다음과 같이 날짜 순서대로 정렬된 결과를 얻을 수 있습니다.
['7-Mar-17', '25-Mar-17', '1-Nov-18', '5-Nov-18']
코드 설명
datetime.strptime(date, "%d-%b-%y")는 문자열을 해석하여 datetime 객체로 변환합니다. 여기서 사용된 포맷 코드의 의미는 다음과 같습니다.
%d: 일(day), 예: 05%b: 축약된 월 이름, 예: Nov%y: 두 자리 연도, 예: 18
만약 날짜 문자열의 형식이 다르다면(예: '2024-05-01'), 포맷 문자열만 그에 맞게 변경하면 됩니다. 또한 원본 목록을 변경하지 않고 새로운 정렬 목록을 얻고 싶다면 sorted()函数 대신 아래와 같이 사용할 수 있습니다.
sorted_dates = sorted(my_dates, key=lambda date: datetime.strptime(date, "%d-%b-%y"))
이 방법을 활용하면 다양한 형식의 날짜 문자열 목록도 손쉽게 시간순으로 정렬할 수 있습니다.