f = (3, 4, 5, {3: 4}, [16, 7, 8])
g = (1, 2, [3, 4, [5, 6], {7: 8}], 9, 10, {11: f}, {12: [1, 2, {3, 4}, [5, 6]]})
Я пытаюсь повторить рекурсивно над g
.Как Итерировать в исчерпывающе в python 2?
Как перебирать каждый элемент рекурсивно в python, который работает для любого списка с любым уровнем вложенности?
Я пробовал с hasattr
, __iter__
, но не будет работать с неизвестным уровнем гнездования.
f=(3,4,5,{3:4},[6,7,8])
g = (1, 2, [3, 4, [5, 6], {7: 8}], 9, 10, {11: (3, 4, 5, {3: 4}, [16, 7, 8])}, {12: [1, 2, set([3, 4]), [5, 6]]})
print g
for each in g:
print each
try:
if hasattr(each,"__iter__"):
for ind in each:
print ind
if hasattr(ind,"__iter__"):
for ind1 in ind:
print ind1
Что здесь 'f'? – Spacedman
Вы упоминаете рекурсивно, но на самом деле не написали рекурсивную функцию - возможно, попробуйте? Также обратите внимание, что строки могут быть проблемой с кодом, подобным этому, будьте осторожны, если они могут быть на вашем входе. – jonrsharpe
Каков ваш желаемый результат? Если есть словарь, где каждый элемент состоит из пары ключ/значение, какой из них следует перебирать? Только ключ? Только значение? И то и другое? –