Отслеживание ответа Мессы, если ваша структура похожа на:
files=[{'date': datetime(2010, 3, 1, 0, 0, 10), 'file': 'foo'},
{'date': datetime(2010, 3, 1, 12, 0, 10), 'file': 'bar'},
{'date': datetime(2010, 3, 2, 3, 5, 10), 'file': 'baz'},
{'date': datetime(2010, 3, 2, 3, 3, 10), 'file': 'foo'}]
попробуйте что-то вроде:
from itertools import groupby
map(lambda x: next(x[1]),
groupby(sorted(files,
key=lambda x: x['date'],
reverse=True),
key=lambda x: datetime(x['date'].year, x['date'].month, x['date'].day)))
, который даст вам:
[{'date': datetime.datetime(2010, 3, 2, 3, 5, 10), 'file': 'baz'}, {'date': datetime.datetime(2010, 3, 1, 12, 0, 10), 'file': 'bar'}]
По сути, сначала выполняется сортировка по дате в обратном порядке (sorted
), затем группировка по дате (groupby
), а затем первый элемент каждой группы (next[1]
).