遍历字典列表的字典
Traversing through a dict of lists of dicts
我有一个包含字典和列表组合的字典,格式大致如下:
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
循环来遍历所有内容,但我不知道是否有更有效的方法来遍历这个字典。
遍历任意嵌套的迭代对象通常使用递归函数完成,例如:
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
通过每次我们找到另一个可迭代对象时对 change_datetime 的新调用,我们可以检查层次结构中的每个 list/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
循环来遍历所有内容,但我不知道是否有更有效的方法来遍历这个字典。
遍历任意嵌套的迭代对象通常使用递归函数完成,例如:
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
通过每次我们找到另一个可迭代对象时对 change_datetime 的新调用,我们可以检查层次结构中的每个 list/dict。