首页 > 解决方案 > 如何获取列表中每个 ID 的最后日期?

问题描述

我有一个非常有趣的项目,它可能会使我们所有人受益。my_cars如果该日期时间低于,我尝试获取每个车辆 ID 的最后一个日期时间my_time

这是my_cars

my_cars = [['Audi', '111', 'White', 'True', 'NY', '06-09-2020', '10:11:32'], 
           ['Audi', '111', 'White', 'True', 'BS', '06-09-2020', '10:11:32'], 
           ['Volkswagen', '222', 'Blue', 'False', 'BR', '06-09-2020', '11:26:21'], 
           ['Mercedes', '333', 'Green', 'True', 'BE', '06-09-2020', '14:51:45'], 
           ['Mercedes', '333', 'Green', 'True', 'BE', '06-09-2020', '15:59:45']
           ['Opel', '555', 'Black', 'True', 'ER', '06-09-2020', '16:30:00']]

这是我的代码:

my_time =  datetime.datetime.strptime('2020-09-06 16:15:00', '%Y-%m-%d %H:%M:%S') 
date_times = []

results = []
date_times = []

for row in my_cars:
        date_time1 = row[-2] + row[-1] 
        date_time2 = datetime.datetime.strptime(row[-2] + row[-1] , '%d-%m-%Y%H:%M:%S') 
        date_times.append(date_time2)
        if date_time2 == max(dt for dt in date_times if dt < my_time):
            results.append(row)
        
print(results)

这是输出:

   [['Audi', '111', 'White', 'True', 'NY', '06-09-2020', '10:11:32'],  
    ['Audi', '111', 'White', 'True', 'BS', '06-09-2020', '10:11:32'], 
    ['Volkswagen', '222', 'Blue', 'False', 'BR', '06-09-2020', '11:26:21'], 
    ['Mercedes', '333', 'Green', 'True', 'BE', '06-09-2020', '14:51:45'], 
    ['Mercedes', '333', 'Green', 'True', 'BE', '06-09-2020', '15:59:45']]

这是所需的输出:

   [['Audi', '111', 'White', 'True', 'NY', '06-09-2020', '10:11:32'],  
    ['Audi', '111', 'White', 'True', 'BS', '06-09-2020', '10:11:32'], 
    ['Volkswagen', '222', 'Blue', 'False', 'BR', '06-09-2020', '11:26:21'], 
    ['Mercedes', '333', 'Green', 'True', 'BE', '06-09-2020', '15:59:45']]

标签: pythonlistdatetime

解决方案


您可以使用以下方法检查一个日期时间是否低于另一个日期时间<

if car_time < my_time:
  result.append(car)

推荐阅读