Python list of objects query

Question:

I have a python class here:

class device:
def __init__(self, hostname, ipaddress, status, version, sensor_id, first_seen) -> None:
    self.hostname = hostname
    self.ipaddress = ipaddress
    self.status = status
    self.version = version
    self.sensor_id = sensor_id
    self.first_seen = first_seen

Lets say I have 3 instances of this which are all identical except the sensor_id and first_seen, these objects are stored in a list

sensor_list = []
dev1 = device("PC1", "1.1.1.1", "offline", "21.1", "ID_0001", "09/08/2022")
dev2 = device("PC1", "1.1.1.1", "offline", "21.1", "ID_0002", "09/09/2022")
dev3 = device("PC1", "1.1.1.1", "offline", "21.1", "ID_0003", "14/08/2022")
sensor_list.append(dev1)
sensor_list.append(dev2)
sensor_list.append(dev3)

How could I search the list of objects, and retrieve the sensor_id with the latest first_seen timestamp? Is it possible to do this using some kind of list comprehension or is it a little more complicated than that?

latest = [x for x in sensor_list ???]
Asked By: Paul

||

Answers:

Use max()

latest = max(sensorlist, key = lambda s: datetime.strptime(s.first_seen, '%d/%m/%Y'))

It would be simpler if you converted first_seen to a datetime when you create the object rather than having to do it whenever you access the object.

Answered By: Barmar
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.