【问题标题】:Python Identifying most recent time(datetime) from a list?Python从列表中识别最近的时间(日期时间)?
【发布时间】:2020-03-28 19:45:03
【问题描述】:

我有两个列表 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']

【问题讨论】:

  • 基于最近的日期时间 - 从其他列表中获取值。
  • 您能否澄清name_list的内容,以及问题所在?

标签: python list datetime python-datetime


【解决方案1】:

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'

【讨论】:

    【解决方案2】:

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

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

    你可以得到排序为的索引

    name_list[sorted_list[0]]
    

    【讨论】:

    • 根据time_list中最近的日期时间,从另一个获取值。在上面的例子中,time_list 中的三个值是最新的,等于 name_liat 中的第三个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2021-05-17
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多