我有一个文件有时间和可重用的会话号。我试图找出这些会议的平均时间差。我会解释我做了什么,但我的逻辑会在特定的场景中中断。你知道吗
<Date and time> session:1234 start
<Date and time> session:2345 start
<Date and time> session:3456 start
<Date and time> session:1234 stop
<Date and time> session:7890 start
<Date and time> session:4567 start
<Date and time> session:2345 stop
<Date and time> session:4567 stop
....
我所做的:-我按照会话编号排序,然后找到后续行的差异,然后平均所有这些差异。但是我得到了错误的值,因为这个文件也包含很少的“会话:xx开始没有“停止”和“很少”的行会话:xx停止没有“开始”的行。你知道吗
所以,我的问题是如何删除这些行。我的逻辑中断了,因为我盲目地按照会话号排列行,然后发现后续行之间的时间差。你知道吗
如果有别的办法,请告诉我。我很乐意尝试。 谢谢您!!你知道吗
我建议您继续为每个
session_id
创建一个字典,如下所示:为了做到这一点,遍历文件的每一行并将会话id作为键(
sessions[session_id]
)添加到sessions
字典就足够了。对于每个会话,您都可以轻松地添加start
和stop
键。你知道吗稍后,您可以处理这个
sessions
字典并删除所有不同时包含start
和stop
的session_id
。用你的最终列表,你可以计算出差异,然后平均你的所有结果。你知道吗我写了一个解决方案,假设如果我有两个连续的开始,我总是可以删除第一个,如果它们是按日期时间排序的
我稍微修改了输入文件,将
date ad time
替换为一个数字。该代码可以很容易地适应管理日期和时间。你知道吗代码分为三个部分:
我的方法是:
文件内容示例:
您可以使用:
然后我将处理按时间排序的输入文件:
我将使用defaultdict(list)作为durations来简单地添加duration,而不必怀疑该会话的列表是否已经存在。你知道吗
相关问题 更多 >
编程相关推荐