Pandas module is very convenient for working with such structures (and not only for this) ...
Suppose you have the following list of dictionaries:
d = [ {'filename': 'c:\\temp\\file111.txt', 'send_date': datetime.datetime(2016, 11, 25, 12, 12, 12)}, {'filename': 'file001.txt', 'send_date': datetime.datetime(2016,1,1,11,11,11)}, {'filename': 'file003.txt', 'send_date': datetime.datetime(2001,12,31,23,59,59)}, {'filename': 'file099.txt', 'send_date': datetime.datetime(2016,10,10,10,10,10)} ]
we create from it DataFrame:
import datetime import pandas as pd df = pd.DataFrame(d) print(df)
Original DF:
In [25]: print(df) filename send_date 0 c:\temp\file111.txt 2016-11-25 12:12:12 1 file001.txt 2016-01-01 11:11:11 2 file003.txt 2001-12-31 23:59:59 3 file099.txt 2016-10-10 10:10:10
Sorted by date DF:
In [26]: print(df.sort_values('send_date')) filename send_date 2 file003.txt 2001-12-31 23:59:59 1 file001.txt 2016-01-01 11:11:11 3 file099.txt 2016-10-10 10:10:10 0 c:\temp\file111.txt 2016-11-25 12:12:12
Sorted by date (in reverse order) DF:
In [27]: print(df.sort_values('send_date', ascending=False)) filename send_date 0 c:\temp\file111.txt 2016-11-25 12:12:12 3 file099.txt 2016-10-10 10:10:10 1 file001.txt 2016-01-01 11:11:11 2 file003.txt 2001-12-31 23:59:59
Sorted by date DF as a list of dictionaries:
In [28]: df.sort_values('send_date').to_dict('r') Out[28]: [{'filename': 'file003.txt', 'send_date': Timestamp('2001-12-31 23:59:59')}, {'filename': 'file001.txt', 'send_date': Timestamp('2016-01-01 11:11:11')}, {'filename': 'file099.txt', 'send_date': Timestamp('2016-10-10 10:10:10')}, {'filename': 'c:\\temp\\file111.txt', 'send_date': Timestamp('2016-11-25 12:12:12')}]