gpt4 book ai didi

Python JSON/Dict 搜索和值更新

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:18 25 4
gpt4 key购买 nike

我有一堆数据条目,如下所示:

{'formType': 'tax', 'periodEndDate': '2016-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2016, 'label': 'FY2016'}
{'formType': 'tax', 'periodEndDate': '2015-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2015, 'label': 'FY2015'}
{'formType': 'tax', 'periodEndDate': '2014-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2014, 'label': 'FY2014'}
{'formType': 'amend', 'periodEndDate': '2015-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2015-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2014-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
{'formType': 'amend', 'periodEndDate': '2014-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}

我想搜索此数据并将“periodStartDate”值设置为上一期间输入“periodEndDate”(相同 formType)后一天的日期。我很乐意使用日期时间和日期添加等,但我不确定如何交叉引用此文件中的不同行项目以推断 periodStartDate。

此外,'formType':'amend' 需要根据使用的年份设置其 'fiscalYearEnd' 值,该年份介于上述 'formType':'tax' 键值对之间。

最佳答案

我会将每一行导入到字典列表中,然后使用datetime.timedelta迭代该列表以获得您想要的结果

我将您提供的字典转换成一个列表来模拟我的示例。

import datetime

list_of_dicts =[
{'formType': 'tax', 'periodEndDate': '2016-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2016, 'label': 'FY2016'},
{'formType': 'tax', 'periodEndDate': '2015-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2015, 'label': 'FY2015'},
{'formType': 'tax', 'periodEndDate': '2014-03-31', 'periodStartDate': 'NULL', 'fiscalYearEnd': 2014, 'label': 'FY2014'},
{'formType': 'amend', 'periodEndDate': '2015-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2015-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2014-06-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'},
{'formType': 'amend', 'periodEndDate': '2014-09-30', 'periodStartDate': 'NULL', 'fiscalYearEnd': 'NULL', 'label': 'NULL'}
]

def searchForYear(year):
for subdict in list_of_dicts:
if str(year) == 'NULL':
print ("Year is NULL")
elif str(year) == str(subdict['fiscalYearEnd']):
if input('Do you want update this row? ') == 'yes':
EndDate = datetime.datetime.strptime((subdict['periodEndDate']),"%Y-%m-%d").date()
StartDate = EndDate + datetime.timedelta(days=1)
subdict['periodStartDate'] = StartDate
print ("StartDate is now ",subdict['periodStartDate'])
else:
print ("Did not update")

else:
print ("Year does not appear in this row")


submitYear = input("Check and update Year: ")
searchForYear(submitYear)

结果应该是这样的:

Check and update Year: 2016
Do you want update this row? yes
StartDate is now 2016-04-01
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row
Year does not appear in this row

关于Python JSON/Dict 搜索和值更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43726219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com