Python 从列表中识别最近的时间(日期时间)?

Python Identifying most recent time(datetime) from a list?

我有两个列表 time_list,日期时间和 name_list 的名称分别相互映射。

    time_list = [datetime.datetime(2020, 3, 28, 18, 49, 36, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 54, 53, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 19, 5, 28, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 59, 56, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 55, 42, tzinfo=tzutc())]


    name_list = [a,b,c,d,e]

如何在 time_list 中查找哪个 name_list 的时间最近?

在上面的例子中: time_list[2] 有最近的 w.r.t name_list[2]

预期输出:

        most_recent_name_list = ['c']

您可以使用排序函数并将等于原始列表长度的范围作为索引传递,对于键,您可以将日期作为键传递并执行如下反向排序以获得排序日期的原始索引并将这些索引用于从其他列表中获取最新日期

sorted_list = sorted(range(len(time_list)),key=time_list.__getitem__,reverse=True)

你可以得到排序的索引

name_list[sorted_list[0]]

zip 两个列表,这将为您提供元组(日期,名称)。取这些元组的最大值(它们将首先按日期排序,然后按名称排序)并从最大值中提取名称:

import datetime
from dateutil.tz import tzutc

time_list = [datetime.datetime(2020, 3, 28, 18, 49, 36, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 54, 53, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 19, 5, 28, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 59, 56, tzinfo=tzutc()),
    datetime.datetime(2020, 3, 28, 18, 55, 42, tzinfo=tzutc())]


name_list = ['a', 'b', 'c', 'd', 'e']

max(zip(time_list, name_list))[1]
#'c'