这是我以前的问题之一的后续问题。我有一些字典,需要查看它们包含的每个值,如果该值是日期时间,则需要以特定方式设置其格式。我还需要能够递归到嵌套的字典和列表中。这是我到目前为止的内容:
signed int mySignInt = 42;
unsigned int myUnsignInt = 42;
这对字典和嵌套字典非常有用,但对列表则不那么有用。因此,在上面的示例中,fix_recursive将纠正SomeDateField1和SubDateField4_1,但不能纠正SubDateField3_1,SubDateField3_2或SubDateField3_3。另外,由于我不知道输入之前会是什么样子,因此我试图创建一个函数,该函数可以获取列出的嵌套3层或4层深度中的值。
建议将不胜感激。
谢谢!
答案 0 :(得分:3)
您需要区分遍历列表和字典
def fix_recursive(obj):
if isinstance(obj, list): # could replace with collections.abc.MutableSequence
itr = enumerate(obj)
elif isinstance(obj, dict): # could replace with collections.abc.MutableMapping
itr = obj.items()
else:
return # don't iterate -- pass back up
for key, value in itr:
if isinstance(value, datetime.datetime):
obj[key] = fix_time(value)
else:
fix_recursive(value)
答案 1 :(得分:-1)