首页 > 解决方案 > python:计算在字典中写入的状态所花费的时间

问题描述

我正在编写一个用于收集 JIRA 统计数据的脚本,现在我一直在计算“状态时间”

在使用了 JIRA API 之后,我有了一本字典:

{   
'2014-12-25T16:47:08': 'In Progress',
'2015-05-25T19:47:54': 'INFO Request',
'2015-06-05T11:04:00': 'In Progress',
'2016-04-15T19:22:01': 'Postponed',
'2017-02-07T12:12:58': 'In Progress',
'2017-02-07T12:13:22': 'Postponed',
'2017-08-12T19:02:59': 'In Progress',
'2018-11-13T18:00:38': 'Resolved',
'2018-11-13T18:03:03': 'Closed'},

好吧,atm 我写了这个东西:

def calc_in_status(dic):
formt="%Y-%m-%dT%H:%M:%S"
res_dic={}
for key,value in dic.items():
    if value not in res_dic and value != 'Closed':
       res_dic.update({value: datetime.strptime(key, formt)})
return res_dic

现在它会产生一个初始的字典,即

{   'In Progress': datetime.datetime(2015, 6, 2, 16, 50, 37),
'PM Review': datetime.datetime(2015, 9, 16, 16, 21, 52),
'Postponed': datetime.datetime(2015, 12, 21, 13, 12, 46),
'Resolved': datetime.datetime(2015, 7, 7, 16, 52, 13)}

我需要一些帮助来计算票在上述所有状态中花费了多少时间。而且我不知道如何遍历它,同时发现票证改变了它的状态,计算时间戳差异并将其写入结果字典。

标签: pythonjira

解决方案


使用datetime模块:

from datetime import datetime
datetime_object1 = datetime.strptime('2014-12-05T16:47:08', '%Y-%m-%dT%X')
datetime_object2 = datetime.strptime('2014-12-25T16:47:08', '%Y-%m-%dT%X')

您只需减去以下内容即可找到两个日期时间之间的时间差:

datetime_object2 - datetime_object1

遍历字典:

for key in my_dict.keys(): ...

鉴于您的用例,您不应该使用字典,因为它不会维护包含对象的任何顺序。考虑使用OrderedDict,它与 dict 非常相似,只是它还记住其元素的顺序。例子:

from collections import OrderedDict
my_data = OrderedDict([('In Progress', datetime_object1),
                       ('PM Review', datetime_object2)])
time_diff = my_data.items()[1][1] - my_data.items()[0][1] # Subtract the date of the second item from the date of the first item

推荐阅读