如何按两个字段分组并按日期时间排序?

用户名

我列出了由三个子元素组成的子列表。

 ['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。

Mihai Alexandru-Ionut

您可以使用库中的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对两个字段进行分组并按发生日期对每种类型的数据进行计数?

如何按两个字段对数组进行排序(包括日期)

如何从日期时间按日期分组并按日期时间排序

关于Elasticsearch按两个字段分组,然后过滤或排序

按两个字段分组,然后对BigDecimal求和

按两个字段对 php 数组进行分组

如何在Java中按两个字段排序并指定排序方向?

按两个字段对Python列表进行排序

按两个字段对数组进行排序

按两个字段对JSON对象进行排序

如何使用bash脚本按两个字段分组?

如何在mongodb中按两个字段分组?

如何在Odoo 8中按两个字段排序?

如何在Java中按两个字段排序?

如何按两个字段排序,其中之一是枚举?

如何使用聚合和分组两个字段

MySQL Fext在两个字段上搜索并按匹配数排序

MS Access SQL选择两个字段并同时按两个字段排序

如何按属性分组并按日期排序

排序两个字段的数据

如何按两个字段对对象列表进行分组并获取结果类型的对象列表

Django按两个字段排序不按预期工作

MySQL按两个字段排序,即群集字段

如何在Java中对两个字段(日期和布尔值)比较器进行排序

在Spring MongoDB中,按一列分组,并获得另外两个字段的和

Java Streams:按两个字段对列表进行分组

Django计数和按两个字段的值分组

默认按两个字段分组的树视图Odoo 10

Django在两个字段上按查询进行分组