Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2023, 17:57   #1
polin11
Форумчанин
 
Регистрация: 07.06.2015
Сообщений: 164
По умолчанию Работа со словарем древовидной структуры

Есть словарь вида:
Код:
{
	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, хочется сделать
без сторонних библиотек, с первого взгляда задача несложная
polin11 вне форума Ответить с цитированием
Старый 25.04.2023, 20:02   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

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

def parents(id, d):
    parents = []
    if id in d:
        id = d[id]['parent']
        while id in d:
            elem = d[id]
            parents.append(elem['name'])
            id = elem['parent']
    return parents

print(parents(4, d))
print(parents(6, d))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический выпадающий список со словарем на другой вкладке Semenson Microsoft Office Excel 3 28.09.2018 10:02
Работа со словарем ispell kireev C++ Builder 0 17.01.2013 22:14
ВЫвод древовидной структуры alt5000 SQL, базы данных 5 10.12.2011 12:58
CheckListBox древовидной структуры Andrey85 Компоненты Delphi 4 27.12.2010 17:26
Проблемы с со словарем Word 2007 Tokvemada Microsoft Office Word 1 16.08.2010 15:25