월요일에 목록의 시작 부분과 일요일이 끝나는 위치에 정렬하려는 Python의 datetime 객체 목록이 있습니다. 가장 좋은 방법은 무엇입니까?Python의 날짜 별 정렬 목록
많은 감사합니다.
월요일에 목록의 시작 부분과 일요일이 끝나는 위치에 정렬하려는 Python의 datetime 객체 목록이 있습니다. 가장 좋은 방법은 무엇입니까?Python의 날짜 별 정렬 목록
많은 감사합니다.
그게 뭡니까?
>>> 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))
이 의지 종류의 최초의 평일에 의하여 다음 날짜별로.
@DSM : 좋은 지적 - 내 경우 엔 날짜가 이미 정렬되었지만 OP의 경우는 그렇지 않을 수도 있습니다. –
@DSM : 답변이 적절한 신용으로 추가되었습니다. –
코드를 보여주세요! – jazzpi
성능, 코드 단순성 또는 무엇을 '최고'로 정의하십시오. –