[英]How to update python dictionary based on time?
所以我在 python 中遇到的问题是每次我连接到我的 jira 帐户时,我似乎无法保留我以前的 python 字典值。
逻辑似乎在 for 循环和我分配空字典时失败了。 除此之外,我确实尝试通过使用几个条件来解决这个问题,但这些方法没有奏效。
这就是我的意思。
当前代码:
import os
import pandas as pd
from jira.client import JIRA
from datetime import datetime
jira_token = os.getenv(<jira_personal_tokne>)
jira_link = os.getenv(<jira_url>)
jira_server = {"server": jira_link}
auth_jira = JIRA(options=jira_server, token_auth=jira_token)
proj = auth_jira.search_issues("project=<my_project> and 'epic link'='<epic_link_of_interest>'")
plmpgm_dict= {}
for i in proj:
formatted_date = datetime.strptime(i.fields.updated, '%y-%m-%dT%H:%M:%S.%f%z').strftime("%Y-%m-%dT%H:%M:%S")
inner_dict = {}
inner_dict["summary"]=i.fields.summary
inner_dict["description"] = i.fields.description
inner_dict["last_retrieved"] = formatted_date
plmpgm_dict[i.key] inner_dict
if i.key == "<jira issue>":
print(plmpgm_dict)
Output 我得到:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T19:44:15'
}
}
Output 我想要/期望:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T18:44:15'
},{
'summary':'old summary_values',
'description: ' old description values',
'last_retrieved':'2022-03-11T18:50:15'
}
}
现在,我想知道是否有一种方法可以存储我以前的 python 字典键值对,而不是在我使用 python 连接到 jira 时被新的字典键值对替换?
实际上,您的问题既不是 Jira 也不是 Python。
运行程序时,所有变量都从零开始。 它是编程逻辑。 您需要保存以前的值,所以您只需要将数据保存在某个目的地(文件系统、数据库等)
理念
所以,我们需要保存数据。 它是一个 Python dict
,所以我们可以将它保存为一个JSON
字符串。 现在,假设我们将它保存在系统中的一个 JSON 文件中。 当你运行程序时,你应该将这个 JSON 文件读入plmpgm_dict
变量。
您可以为该操作使用以下代码:
import json
def dict_to_json_file(some_dict, file_name):
fp = open(file_name, 'w+)
fp.write(json.dumps(some_dict))
fp.close()
def json_file_to_dict(file_name):
fp = open(file_name, 'r+)
some_dict = json.loads(fp.read())
fp.close()
return some_dict
算法
在for
循环之前,您需要使用类似plmpgm_dict = json_file_to_dict('dump.json')
的内容将文件(如果存在)读入plmpgm_dict
。
在for
循环之后,在代码的末尾,您需要使用类似dict_to_json_file(plmpgm_dict, 'dump.json')
的内容将 dict 转储到 JSON 文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.