上MESSA的回答跟進,如果你的結構是這樣的:
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
),然後按ta kes每個組的第一個元素(next[1]
)。
您可能希望顯示一些代碼,所以我們知道確切的數據結構。 – 2010-04-01 22:16:10
「數組」? 「子陣列」?你是說名單?如果是這樣,請編輯你的問題來說'list'。 – 2010-04-02 10:41:31