2013-11-24 2 views
-1

월요일에 목록의 시작 부분과 일요일이 끝나는 위치에 정렬하려는 Python의 datetime 객체 목록이 있습니다. 가장 좋은 방법은 무엇입니까?Python의 날짜 별 정렬 목록

많은 감사합니다.

+5

코드를 보여주세요! – jazzpi

+1

성능, 코드 단순성 또는 무엇을 '최고'로 정의하십시오. –

답변

1

그게 뭡니까?

>>> import datetime 
>>> now = datetime.date.today() 
>>> now.isoweekday() 
7 
>>> days = [now + datetime.timedelta(days=x) for x in range(30)] 
>>> days 
[datetime.date(2013, 11, 24), datetime.date(2013, 11, 25), datetime.date(2013, 11, 26), datetime.date(2013, 11, 27), datetime.date(2013, 11, 28), datetime.date(2013, 11, 29), datetime.date(2013, 11, 30), datetime.date(2013, 12, 1), datetime.date(2013, 12, 2), datetime.date(2013, 12, 3), datetime.date(2013, 12, 4), datetime.date(2013, 12, 5), datetime.date(2013, 12, 6), datetime.date(2013, 12, 7), datetime.date(2013, 12, 8), datetime.date(2013, 12, 9), datetime.date(2013, 12, 10), datetime.date(2013, 12, 11), datetime.date(2013, 12, 12), datetime.date(2013, 12, 13), datetime.date(2013, 12, 14), datetime.date(2013, 12, 15), datetime.date(2013, 12, 16), datetime.date(2013, 12, 17), datetime.date(2013, 12, 18), datetime.date(2013, 12, 19), datetime.date(2013, 12, 20), datetime.date(2013, 12, 21), datetime.date(2013, 12, 22), datetime.date(2013, 12, 23)] 
>>> sorted_days = sorted(days, key=datetime.date.isoweekday) 
>>> print "\n".join(["%s : %s" % (d.isoweekday(), d) for d in sorted_days]) 
1 : 2013-11-25 
1 : 2013-12-02 
1 : 2013-12-09 
1 : 2013-12-16 
1 : 2013-12-23 
2 : 2013-11-26 
2 : 2013-12-03 
2 : 2013-12-10 
2 : 2013-12-17 
3 : 2013-11-27 
3 : 2013-12-04 
3 : 2013-12-11 
3 : 2013-12-18 
4 : 2013-11-28 
4 : 2013-12-05 
4 : 2013-12-12 
4 : 2013-12-19 
5 : 2013-11-29 
5 : 2013-12-06 
5 : 2013-12-13 
5 : 2013-12-20 
6 : 2013-11-30 
6 : 2013-12-07 
6 : 2013-12-14 
6 : 2013-12-21 
7 : 2013-11-24 
7 : 2013-12-01 
7 : 2013-12-08 
7 : 2013-12-15 
7 : 2013-12-22 
>>> 

EDIT : 내 날짜가 이미 정렬되었지만 그럴 수 없습니다. 당신이 내 분류 날짜를 갖고 싶어하지 않는 경우와 같은 평일 그룹, DSM의 제안 (감사 DSM)는 RighThing (TM)입니다 :

>>> sorted_days = sorted(days, key=lambda d: (d.isoweekday(), d)) 

이 의지 종류의 최초의 평일에 의하여 다음 날짜별로.

+0

@DSM : 좋은 지적 - 내 경우 엔 날짜가 이미 정렬되었지만 OP의 경우는 그렇지 않을 수도 있습니다. –

+0

@DSM : 답변이 적절한 신용으로 추가되었습니다. –