遍历一系列词典

时间:2016-05-11 23:30:38

标签: python dictionary traversal

我有一个包含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循环来遍历所有内容,但我不知道是否有更有效的方法来遍历这个词典。

1 个答案:

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