В этом случае, я полагаю, это означало бы представлять детей как список идентификаторов, а не фактический список детей, со всеми узлами в одном списке:
[ {'id': 4, 'children': ()},
{'id': 2, 'children': (1, 7)},
{'id': 1, 'children': (6, 5)},
{'id': 6, 'children': ()},
{'id': 5, 'children': ()},
{'id': 7, 'children': (3,)},
{'id': 3, 'children': ()} ]
(Я использовал кортежи, потому что я предпочитаю не давать себе гибкость для мутирования объекта, пока эта гибкость не докажет, что он полезен и полезен ясным образом. В любом случае я бы никогда не использовал None
здесь вместо пустого потому что это усложняет логику, и "особые случаи не являются достаточно специальными" - здесь это не является особым.)
Конечно, это короче, но древовидная структура скрыта. Это противоречит "явным лучше, чем неявным"?
Лично я считаю, что "квартира лучше, чем вложенная" имеет ограниченную применимость и нигде рядом с самым важным аспектом Дзэн. (Конечно, я не мог сделать много приятных функционально-программирующих вещей, которые я делаю, если не позволял себе значительную вложенность.) Я подозреваю, что проблема с "вложенными" заключается в том, что для понимания информации требуется контекстное переключение. Я действительно думаю, что это больше проблема, когда вы следуете императивной логике, чем для анализа данных или кода функционального стиля, - где проще просто мысленно назвать вложенный блок и рассматривать его работу отдельно от внешнего контекста.
Что ты говоришь?