我有以下python,它应该遍历字典中的所有项目并更正其找到的任何日期的格式。
def fix_time(in_time):
out_time = '{}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}'.format(in_time.year, in_time.month, in_time.day, in_time.hour, in_time.minute, in_time.second)
return out_time
mydict={
'Field1':'Value1'
'SomeDateField':1516312413.729,
'Field2':'Value2',
'Field3': {
'Subfield1':'SubValue1',
'SubDateField':1516312413.729
}
}
for key, value in mydict.items():
if type(value) is datetime.datetime:
mydict['{}'.format(key)]=fix_time(mydict.get(key, None))
我的问题是,它似乎只在第一级纠正了日期字段(示例中为“ SomeDateField”)。嵌套字典中的日期字段将被忽略(示例中为“ SubDateField”)。这是一个简单的例子。在我的环境中,我不知道收到的输入会是什么样。这些日期字段可能会降低3或4级。
任何建议都将不胜感激。
谢谢!
答案 0 :(得分:-1)
def fix_recursive(dct):
for key, value in dct.items():
if isinstance(value, datetime.datetime):
mydict[key] = fix_time(value)
elif isinstance(value, dict):
fix_recursive(value)
fix_recursive(mydict)
不确定是否确实能完成这项工作,但是应该遵循这些原则……