我有一些嵌套的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])
以上似乎确实简化了代码。
是否有更好的遍历此数据结构的方法?什么是最佳做法?