python - python - 如何在Python列表中保留每个日期的第一个和最后一个值?
问题描述
我有一个嵌套列表,其结构如下:
longlist = [["Bob", "2019-12-12 19:03"], ["Joe", "2019-12-12 19:04"],
["Sally", "2019-12-12 21:07"], ["Jane", "2019-12-13 2:02"],
["Jose", "2019-12-13 3:04"], ["Ahmed", "2019-12-13 3:06"],
["Xi", "2019-12-13 7:43"]]
我的目标是只保留每个日期的第一项和longlist
最后一项。使用上面的嵌套列表,我想要的输出是:
newlist = [["Bob", "2019-12-12 19:03"], ["Sally", "2019-12-12 21:07"],
["Jane", "2019-12-13 2:02"], ["Xi", "2019-12-13 7:43"]]
我在整个 SO 和网上搜索,但找不到我要找的东西。有谁知道这怎么可能?
解决方案
您可以使用itertools.groupby
( doc ) 并按日期字符串对元素进行分组(拆分后)。
例如:
from itertools import groupby
longlist = [["Bob", "2019-12-12 19:03"], ["Joe", "2019-12-12 19:04"],
["Sally", "2019-12-12 21:07"], ["Jane", "2019-12-13 2:02"],
["Jose", "2019-12-13 3:04"], ["Ahmed", "2019-12-13 3:06"],
["Xi", "2019-12-13 7:43"]]
out = []
for _, g in groupby(longlist, lambda k: k[1].split()[0]):
first, *_, last = g
out.extend([first, last])
from pprint import pprint
pprint(out)
印刷:
[['Bob', '2019-12-12 19:03'],
['Sally', '2019-12-12 21:07'],
['Jane', '2019-12-13 2:02'],
['Xi', '2019-12-13 7:43']]
注意:根据您的评论,我没有检查唯一日期(如您所说,所有日期至少有 10 个项目。)
推荐阅读
- r - 如何将孤立的栅格值添加到周围的类?
- sql - BigQuery SQL 语法错误:应为“(”或“,”或关键字 SELECT,但在 [9:2] 处结束脚本
- java - 我使用 TreeSet 的解决方案的时间复杂度是多少?
- r - R - 如何使用外部
- flutter - 如何在 Flutter 中绑定 bing 地图?
- reactjs - 使用增量装饰时,反应中的摩纳哥编辑器停止突出显示
- accelerometer - 从三星智能手表 (Tizen) 获取加速度数据
- c++ - 通过 sendto 发送 UDP 数据包
- pyinstaller - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'.../thinc/backends/_custom_kernels.cu'
- typescript - 如何让用户从我的 NPM 包的子文件夹中导入