根据条件遍历嵌套字典的不同级别

时间:2019-12-11 09:40:18

标签: python dictionary

我有一些嵌套的Python字典,例如my_dict[year][month][day] = some_value。 每个子级别都是一本字典。

my_dict = {}
my_dict[year] = {}
my_dict[year][month] = {}
...

根据某些情况,我想遍历嵌套字典到一定级别。最初,我使用嵌套的for循环。例如,

for year in my_dict:
    for month in my_dict[year]:
        print(my_dict[year][month])

或者如果我想要最多day

for year in my_dict:
    for month in my_dict[year]:
        for day in my_dict[year][month]:
            print(my_dict[year][month][day])

但这似乎是重复的,所以我选择了发电机。

def my_generator(my_dict, interval):

    if interval == 'day':
        for year in my_dict:
            for month in my_dict[year]:
                for day in my_dict[year][month]:
                    yield year, month, day

    elif interval == 'month':
        for year in my_dict:
            for month in my_dict[year]:
                yield year, month

    etc... 

使用这种方法,我生成了一个匹配给定条件的迭代器,例如如果我想遍历嵌套的字典直到day

iterator = my_generator(my_dict, interval='day')
for year, month, day in iterator:
    print(my_dict[year][month][day])

以上似乎确实简化了代码。

是否有更好的遍历此数据结构的方法?什么是最佳做法?

0 个答案:

没有答案