You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python对象列表中获取最新first_seen对应的sensor_id?

解决方案

首先要注意:你的first_seen是字符串格式的日期(比如"09/08/2022"),直接比较字符串会出错(比如"14/08/2022"字符串比"09/09/2022"大,但实际日期更早),所以必须先把字符串转成可比较的datetime对象才能正确判断时间先后。

方法一:用max()函数(最简洁高效)

直接用max()函数指定排序规则,把每个对象的first_seen转成日期对象后比较,拿到最新的设备实例再提取sensor_id:

from datetime import datetime

# 匹配你的日期格式:日/月/年
date_format = "%d/%m/%Y"
# 找到最新的设备对象
latest_device = max(sensor_list, key=lambda x: datetime.strptime(x.first_seen, date_format))
# 提取对应的sensor_id
latest_sensor_id = latest_device.sensor_id
print(latest_sensor_id)  # 输出结果:ID_0002

方法二:用列表推导式(分两步实现)

如果一定要用列表推导式,需要先找出最大的日期值,再筛选对应对象:

from datetime import datetime

date_format = "%d/%m/%Y"
# 第一步:计算所有日期中的最大值
max_date = max(datetime.strptime(x.first_seen, date_format) for x in sensor_list)
# 第二步:用列表推导式筛选出匹配最大日期的设备(如果有多个设备同属最新日期,会返回全部)
latest_devices = [x for x in sensor_list if datetime.strptime(x.first_seen, date_format) == max_date]
# 提取第一个设备的sensor_id(如果唯一最新日期的话)
latest_sensor_id = latest_devices[0].sensor_id
print(latest_sensor_id)  # 输出结果:ID_0002

关于单步列表推导式的说明

单步列表推导式无法同时完成「计算最大值」和「筛选对象」的操作——因为推导式是用来生成列表的,没法在推导式内部先计算出最大值再做筛选,所以要么拆成两步,要么用更高效的max()方法。


内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:11:05