比较列表值并选择每天的最大值-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]以内的随机数,找到最大值和最小值并交换位置