比较列表值并选择每天的最大值-Python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较列表值并选择每天的最大值-Python相关的知识,希望对你有一定的参考价值。

我正在使用Python 3.6。我有一个下面的列表(通过json对象捕获开始时间),并希望捕获列表中每一天的最新日期/时间值。

mytimelist =[2020-05-30T19:21:36.124Z, 2020-05-31T10:34:06.137Z, 2020-05-31T17:14:06.117Z,2020-05-31T23:06:21.131Z, 2020-06-01T19:21:36.108Z, 2020-06-01T21:55:11.137Z]

我想要下面的列表。

myfinallist = [2020-05-30T19:21:36.124Z, 2020-05-31T23:06:21.131Z, 2020-06-01T21:55:11.137Z]

任何人都可以在这里帮助我。

答案

解决方案可能包含来自itertools的groupby

from itertools import groupby
import re

for k, v in groupby(mytimelist, key=lambda x: re.search(r'^([^T]+)',x).group(1)):
    v = sorted(v)
    print(v[-1])

2020-05-30T19:21:36.124Z
2020-05-31T23:06:21.131Z
2020-06-01T21:55:11.137Z
另一答案

我假设您可以在Python中以字符串形式获取日期?然后,您可以使用datetime将它们转换为datetime对象,并遍历唯一的日期,同时检查最大值。

import datetime as dt

mytimelist =['2020-05-30T19:21:36.124Z',
             '2020-05-31T10:34:06.137Z',
             '2020-05-31T17:14:06.117Z',
             '2020-05-31T23:06:21.131Z',
             '2020-06-01T19:21:36.108Z',
             '2020-06-01T21:55:11.137Z']

#see https://strftime.org/ for the syntax
date_format = "%Y-%m-%dT%H:%M:%S.%fZ"
datetimes = [dt.datetime.strptime(t,date_format) for t in mytimelist]

output = {}
for time in datetimes:
    date = time.date()
    if date not in output:
        output[date] = time
    else:
        if time > output[date]:
            output[date] = time

for key in sorted(output.keys()):
    print(str(key) + ': ' + str(output[key]))

输出:

2020-05-30: 2020-05-30 19:21:36.124000
2020-05-31: 2020-05-31 23:06:21.131000
2020-06-01: 2020-06-01 21:55:11.137000

以上是关于比较列表值并选择每天的最大值-Python的主要内容,如果未能解决你的问题,请参考以下文章

如何比较日期并从选择列表中选择选项?

Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置

比较两个列表并选择最大值和最小值。 (float 不是可迭代对象)

ACCESS VBA 从列表框中选择多个值并执行查询名称

python常用代码

技术流-算法日记(选择排序)