Als al je maanden en dagen nulgevuld zijn en je datums in m/d/Y-formaat zijn zoals "01/01/2001", kun je schrijven:
def datekey(d):
m, d, y = d.split('/')
return (y, m, d)
datelist.sort(key=datekey)
Als de getallen niet altijd met nuldeks zijn gevuld, kunt u elk nummer voor vergelijkingsdoelen naar een int casten:
def datekey(d):
m, d, y = d.split('/')
return (int(y), int(m), int(d))
datelist.sort(key=datekey)
Dit is manier sneller dan strptime
gebruiken als al je datums in zo'n eenvoudige indeling zijn:
>>> import timeit
>>> print timeit.Timer("datelist.sort(key=datekey)",
... setup="""\
... datelist = ['01/01/2001', '01/02/2001', '12/31/1999']
... def datekey(d):
... m, d, y = d.split('/')
... return (y, m, d)
... """).timeit()
3.3154168129
>>> print timeit.Timer("datelist.sort(key=datekey)",
... setup="""\
... datelist = ['01/01/2001', '01/02/2001', '12/31/1999']
... def datekey(d):
... m, d, y = d.split('/')
... return (int(y), int(m), int(d))
... """).timeit()
11.1701700687
>>> print timeit.Timer("datelist.sort(key = lambda s: datetime.datetime.strptime(s, '%m/%d/%Y'))",
... setup="""\
... datelist = ['01/01/2001', '01/02/2001', '12/31/1999']
... import datetime
... """).timeit()
59.2817358971
strptime
is hugely powerful, very important to know, and very slow in this use case.