¿Cómo ordeno esta lista en Python, si mi fecha está en una Cadena?

[{'date': '2010-04-01', 'people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277}] 

Supongamos que tengo esta lista. ¿Cómo puedo ordenar por “fecha”, que es un elemento en el diccionario. Pero, “fecha” es una cadena …

 .sort(key=lambda x: datetime.datetime.strptime(x['date'], '%Y-%m-%d')) 

Afortunadamente, las fechas en formato ISO, que parece ser lo que tienes aquí, se clasifican perfectamente como cadenas ! Así que no necesitas nada lujoso:

 import operator yourlistofdicts.sort(key=operator.itemgetter('date')) 

La solución de Satoru.Logic es limpia y simple. Pero, según la publicación de Alex, no es necesario manipular la cadena de fecha para obtener el orden correcto … así que pierde el .split('-')

Este código será suficiente:

 records.sort(key=lambda x:x['date']) 

En Python 2.6 se puede usar w / operator.itemgetter. Dado que la fecha es AAAA-MM-DD, se ordena a pesar de que es una cadena que causa su mayor a menor; uso ese formato todo el tiempo por este motivo

 >>> import operator >>> l = [{'date': '2010-04-01','people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277}] >>> sorted( l, key = operator.itemgetter('date') ) [{'date': '2010-04-01', 'hits': 4522, 'people': 1047}, {'date': '2010-04-02', 'hits': 3277, 'people': 736}, {'date': '2010-04-03', 'hits': 2582, 'people': 617}] 
 records = [ {'date': '2010-04-01', 'people': 1047, 'hits': 4522}, {'date': '2010-04-03', 'people': 617, 'hits': 2582}, {'date': '2010-04-02', 'people': 736, 'hits': 3277} ] records.sort(key=lambda x: x['date'].split('-'))