Сортировка плоского списка в иерархический вложенный словарь, ТОЛЬКО когда известен родительский элемент [дубликат]Python

Программы на Python
Ответить
Anonymous
 Сортировка плоского списка в иерархический вложенный словарь, ТОЛЬКО когда известен родительский элемент [дубликат]

Сообщение Anonymous »

Этот пост является продолжением вложенного dict с отношением родитель/потомок, который был закрыт из-за дублирования. Однако через 3 дня....Я попробую еще раз.
Проблема следующая. Я пытаюсь разобраться в волшебстве наборов сбора, которые имеют иерархический формат.
https://scryfall.com/sets

API: https://api.scryfall.com/sets
Информация о наборе для каждого набора состоит ТОЛЬКО из ключа «parent_set_code», который дает код родительского набора. Итак, чего я пытался достичь, так это найти способ организовать данные так, как они показаны на веб-сайте. Но это немного сложно, поскольку у меня есть только плоский список наборов и ссылка только на родительский элемент. НЕТ детей.
Чтобы представить эту проблему, в комнате должно находиться 100 случайных людей, и им разрешено привести с собой одного из родителей. У каждого человека есть свое имя; тег и тег «имя родителя» (если родитель присутствует). Как бы вы решили эту проблему, чтобы результатом был иерархический вложенный словарь?
Давайте попробуем с 10 людьми:

Код: Выделить всё

people = [
{ "name" : "a" },
{ "name": b, "parent" : "a"},
{ "name": c, "parent" : "a"},
{ "name": d, "parent" : "b"},
{ "name": e, "parent" : "d"},
]
Результат должен быть примерно таким:

Код: Выделить всё

sorted_people = [
{ "name" : "a", "children" : [
{ "name": b, "parent" : "a", "children" : [
{ "name": d, "parent" : "b", "children" : [
{ "name": e, "parent" : "d"},
]}
]}, { "name": c, "parent" : "a"}
]}
]
Проблема здесь в том, что многие примеры и древовидные построения, которые я видел, уже содержат информацию детей. И подход осуществляется сверху (корень) вниз (лист).
Также типичной проблемой является то, что первый человек может быть внуком, поэтому у него нет точки отсчета к корню.
Как бы вы подошли к этой проблеме?


Это самый близкий метод, который мне удалось получить. Но этот метод опять же сверху вниз и усложняется при попытке поставить на место внуков.
Дайте мне знать!
(если в коде есть опечатки, сообщите, он набран вручную)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»