Проблема следующая. Я пытаюсь разобраться в волшебстве наборов сбора, которые имеют иерархический формат.
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"}
]}
]
Также типичной проблемой является то, что первый человек может быть внуком, поэтому у него нет точки отсчета к корню.
Как бы вы подошли к этой проблеме?
Это самый близкий метод, который мне удалось получить. Но этот метод опять же сверху вниз и усложняется при попытке поставить на место внуков.
Дайте мне знать!
(если в коде есть опечатки, сообщите, он набран вручную)
Мобильная версия