我有一个这样的列表列表:
a=[['2012-05-11','yes','44','426.24'],['2013-03-22','no','12','426.24'],['2018-08-13','yes','88','426.24'] ,['2017-05-11','yes','404','450.24']]
我想删除所有具有相同第 4 个值的列表 ( a[0][3],a[1][3] ...)
并且只让具有最近的日期,
所以就我而言,我想要这个结果:
a=[['2018-08-13','yes','88','426.24'] ,['2017-05-11','yes','404','450.24']]
有什么想法可以做到这一点吗?
最佳答案
这可以通过 itertools.groupby
和 sorted
的组合来实现。
下面的解决方案明确使用 datetime
转换来排序日期。
排序后,只需要提取每个groupby
元素的最后一个元素,即可得到所需的条目。
from datetime import datetime
from itertools import groupby
from operator import itemgetter
sorter = sorted(a, key=lambda x: (x[3], datetime.strptime(x[0], '%Y-%m-%d')))
grouper = groupby(sorter, key=itemgetter(3))
res = [list(j)[-1] for _, j in grouper]
[['2018-08-13', 'yes', '88', '426.24'],
['2017-05-11', 'yes', '404', '450.24']]
关于python - 使用最大条件比较和删除列表列表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50153281/