我列出了子列表,每个子列表中包含三个元素。
['1', '10', '2017-05-05']
['1', '10', '2017-07-20']
['2', '15', '2017-12-12']
['2', '15', '2018-01-24']
['1', '11', '2017-05-15']
['1', '11', '2017-07-21']
['2', '16', '2018-01-24']
['2', '16', '2018-01-28']
我想在前2个元素上执行一个组,然后返回具有更大日期的列表(意味着更接近今天)。所以我希望输出为:
['1', '10', '2017-07-20']
['2', '15', '2018-01-24']
['1', '11', '2017-07-21']
['2', '16', '2018-01-28']
前两行组合在一起然后2017-07-20获胜,因为它大于2017-05-05。
答案 0 :(得分:0)
您可以使用groupby
库中的itertools
方法。
from itertools import groupby
for key, rows in groupby(l, lambda x: (x[0], x[1])):
dates = sorted([item[2] for item in list(rows)])
print(list(key) + [dates[-1]])
输出
['1', '10', '2017-07-20']
['2', '15', '2018-01-24']
['1', '11', '2017-07-21']
['2', '16', '2018-01-28']
您也可以使用list comprehension
。
list = [list(key) + [sorted([item[2] for item in list(rows)])[-1]] for key, rows in groupby(l, lambda x: (x[0], x[1]))]