@polin11

Как работать со словарем древовидной структуры?

Есть словарь вида:
{
	1: {'name': 'Земля', 'parent': None}, 
	2: {'name': 'Евразия': 'parent': 1},
	3: {'name': 'Китай': 'parent': 2}, 
	4: {'name': 'Пекин': 'parent': 3},
	5: {'name': 'Австралия': 'parent': 1},  
	6: {'name': 'Сидней': 'parent': 5}
}


Нужно по ключу элемента получить всех родителей, например
для ключа 4 - нужно получить элементы Китай, Евразия, Земля
для ключа 6 - нужно получить элементы Австралия, Земля

Погуглил нашел, что-то похожее с использованием treelib, хочется сделать
без сторонних библиотек, с первого взгляда задача несложная
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F
def get_ancestors(data, key):
  result = []

  while item := data.get(key):
    result.append(item['name'])
    key = item['parent']

  return result


print(get_ancestors(data, 4))
Ответ написан
Комментировать
Robertgoodman
@Robertgoodman
Backend developer
def get_parents(node_id, tree):
    node = tree[node_id]
    parents = [node]
    while node['parent']:
        node = tree[node['parent']]
        parents.append(node)
    return parents[::-1]  # возвращаем список в обратном порядке
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы