遍历嵌套字典

时间:2018-08-16 23:58:07

标签: python dictionary nested

我有以下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级。

任何建议都将不胜感激。

谢谢!

1 个答案:

答案 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)

不确定是否确实能完成这项工作,但是应该遵循这些原则……