python - 使用最大条件比较和删除列表列表中的列表

标签 python python-3.x python-2.7 list sorting

我有一个这样的列表列表:

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.groupbysorted 的组合来实现。

下面的解决方案明确使用 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/

相关文章:

python - Python 类的 __key__ 参数

python - 在 Python 3.4 中重写代码时出现 Bad Zip File 错误

python - 检查是否存在史诗问题,如果不存在,则创建一个新的史诗问题

Python tkinter : browse directory and save to new directory

python - 如何为 Python 2.7 安装 PyQT4?

python - 如何获取元素在列表中出现的次数 Python

python - 如何在Python中将不同的时间序列图合并成二维图

python-3.x - 减少深度学习模型的输入维度

opengl - 用作字典键,不可散列类型

python - 使用 xpath 提取表列值(不包括 <sup>)