我列出了由三个子元素组成的子列表。
['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']
我想对前两个元素进行分组,然后返回日期较大的列表(意味着更接近今天)。所以我希望输出是:
['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。
您可以使用库中的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]))]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句