python - 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)}
我需要一些帮助来计算票在上述所有状态中花费了多少时间。而且我不知道如何遍历它,同时发现票证改变了它的状态,计算时间戳差异并将其写入结果字典。
解决方案
使用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
推荐阅读
- python - 有没有办法通过python控制pc程序?
- html - 我如何限制 Angular HTML 中的 ngFor?
- windows - 在 Windows10 64 位安装 pygraphviz
- python - 在循环中创建变量的语法错误
- c++ - 为什么我得到一个
不是 ? 我试图传递一个字符串并从中返回 - python - 向热图中的特定单元格添加注释
- android - 适用于 android 的 Exoplayer,尝试流式传输 m3u8 文件并出现错误:没有可用的提取器可以读取流
- amazon-web-services - AWS ECR,基于 ECS 的部署:nginx:[emerg] 主机在 /etc/nginx/conf.d/default.conf:2 的上游“app:9000”中找不到
- node.js - Express 使用 typedi/di 存储 mongoose 模型
- php - 如何在准备好的 SELECT 语句中检查 NULL 列,然后做一些事情?