पायथन में दिन की तारीखों की सूचियों को क्रमबद्ध करें

मेरे पास पाइथन में डेटाटाइम ऑब्जेक्ट्स की एक सूची है जिसे मैं क्रमबद्ध करना चाहता हूं, सोमवार को सूची की शुरुआत में और रविवार को अंत में होना चाहिए। इसे पूरा करने का सबसे अच्छा तरीका क्या है?

बहुत धन्यवाद

0
जोड़ा
विचारों: 1
हमें अपना कोड दिखाएं!
जोड़ा लेखक jazzpi, स्रोत
सर्वोत्तम को परिभाषित करें: प्रदर्शन, कोड सादगी या क्या।
जोड़ा लेखक Aleksander Lidtke, स्रोत

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
>>> 

संपादित करें: मेरी तिथियां पहले से ही क्रमबद्ध थीं, लेकिन हो सकता है कि यह आपके लिए मामला न हो। यदि नहीं और आप एक ही सप्ताह के समूह के भीतर क्रमबद्ध तिथियां बनाना चाहते हैं, तो डीएसएम का सुझाव (धन्यवाद डीएसएम) राघटिंग (टीएम) है:

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

यह पहले दिन के आधार पर पहले दिन क्रमबद्ध होगा।

0
जोड़ा
@DSM: अच्छा बिंदु - मेरे मामले में तिथियां पहले से ही क्रमबद्ध थीं लेकिन यह ओपी के लिए मामला नहीं हो सकता है।
जोड़ा लेखक bruno desthuilliers, स्रोत
@DSM: उत्तर में सुझाव (उचित क्रेडिट के साथ) जोड़ा गया।
जोड़ा लेखक bruno desthuilliers, स्रोत