【发布时间】:2021-02-10 08:58:47
【问题描述】:
我已经生成了一个按天计算的嵌套列表,并且想要计算登录和注销会话之间的总持续时间,并将该值单独存储在一个持续时间嵌套列表中,按登录发生的日期进行组织。
我的python脚本是:
import datetime
import itertools
Logintime = [
datetime.datetime(2021,1,1,8,10,10),
datetime.datetime(2021,1,1,10,25,19),
datetime.datetime(2021,1,2,8,15,10),
datetime.datetime(2021,1,2,9,35,10)
]
Logouttime = [
datetime.datetime(2021,1,1,10,10,11),
datetime.datetime(2021,1,1,17,0,10),
datetime.datetime(2021,1,2,9,30,10),
datetime.datetime(2021,1,2,17,30,12)
]
Logintimedaywise = [list(group) for k, group in itertools.groupby(Logintime,
key=datetime.datetime.toordinal)]
Logouttimedaywise = [list(group) for j, group in itertools.groupby(Logouttime,
key=datetime.datetime.toordinal)]
print(Logintimedaywise)
print(Logouttimedaywise)
# calculate total duration
temp = []
l = []
for p,q in zip(Logintimedaywise,Logouttimedaywise):
for a,b in zip(p, q):
tdelta = (b-a)
diff = int(tdelta.total_seconds()) / 3600
if diff not in temp:
temp.append(diff)
l.append(temp)
print(l)
此脚本生成以下输出(变量l 中的持续时间作为单例列表中的平面列表出现):
[[datetime.datetime(2021, 1, 1, 8, 10, 10), datetime.datetime(2021, 1, 1, 10, 25, 19)], [datetime.datetime(2021, 1, 2, 8, 15, 10), datetime.datetime(2021, 1, 2, 9, 35, 10)]]
[[datetime.datetime(2021, 1, 1, 10, 10, 11), datetime.datetime(2021, 1, 1, 17, 0, 10)], [datetime.datetime(2021, 1, 2, 9, 30, 10), datetime.datetime(2021, 1, 2, 17, 30, 12)]]
[[2.000277777777778, 6.5808333333333335, 1.25, 7.917222222222223]]
但我想要的输出格式是以下嵌套的持续时间列表(列表中的每个项目都应该是给定登录日的持续时间列表):
[[2.000277777777778, 6.5808333333333335] , [1.25, 7.917222222222223]]
任何人都可以帮助我如何根据登录日期将总持续时间存储为嵌套列表?
提前致谢。
【问题讨论】:
-
如果登录和注销在不同的日子怎么办?然后 logintimedaywise 和 logouttimedaywise 的一些内部列表将具有不同数量的元素,并且您的脚本会中断...我将首先获取持续时间(注销 - 登录),然后将结果列表排序为仅根据组织的嵌套列表登录日
标签: python python-3.x list nested-lists