Мне нужна способность в первом цикле проходить через глубоко вложенные свойства диктата. Это дает мне часть пути (https://stackoverflow.com/a/10756615/5932433), но результат не то, что мне нужно.
Учитывая следующую структуру данных:
data = {
"a": {
"c": 1,
"d": 3,
},
"b": {
"e": 2,
"f": 4,
}
}
Мне нужен метод, который будет возвращать следующее:
for _, v in cycle(tree_iter(data)):
print v
# 1 (a -> c)
# 2 (b -> e)
# 3 (a -> d)
# 4 (b -> f)
# 1
# 2
# 3
# 4
# ...etc...
Это метод, который я сейчас использую для tree_iter
:
def tree_iter(nested):
for key, value in nested.iteritems():
if isinstance(value, Mapping):
for inner_key, inner_value in tree_iter(value):
yield inner_key, inner_value
else:
yield key, value
Обратите внимание, что порядок не должен быть гарантирован, если он последовательный. Каждая итерация должна циклически проходить через a / b, а затем циклически проходить через вложенные значения.