我有一个包含dicts和列表组合的dict,格式通常如下:
dict={
category1: {
[{sub_cat1: [{item1:datetime1},
{item2:val2}
],
sub_cat2: 'some-string',
sub_cat3: some_int},
{sub_cat1: [{item1:datetime3},
{item2:val4}
],
sub_cat2: 'some-string2',
sub_cat3: some_int2},
.
.
],
category2:{[]},
category3:{[{some more stuff}]}
}
目的是直接在dict中修改最低层次结构内的datetime对象。我可以编写一个巨大的for
循环来遍历所有内容,但我不知道是否有更有效的方法来遍历这个词典。
答案 0 :(得分:3)
遍历任意嵌套的iterables通常使用递归函数完成,例如:
def change_datetime(new_datetime, dct):
temp = enumerate(dct) if isinstance(dct, list) else dct.items()
for index, i in :
if hasattr(i, "__iter__"):
change_datetime(new_datetime, i)
elif isinstance(i, datetime.datetime):
dct[index] = i
每当我们找到另一个iterable时,通过对change_datetime的新调用,我们可以检查层次结构中的每个列表/ dict。