Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со словарем древовидной структуры 
:(
    Опции темы
polin11
Дата 25.4.2023, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Есть словарь вида:
Код

{
    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, хочется сделать
без сторонних библиотек, с первого взгляда задача несложная

PM MAIL   Вверх
Oldshelf
Дата 26.4.2023, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 22.4.2018

Репутация: нет
Всего: 4



Кажется, ничего сложного.

Присвоить все строки словаря элементам массива по идентификаторам (1-6). Можно в виде двух подмассивов: с именем ('Австралия') и ссылкой (1). Либо просто строкой, которую потом можно разбить по разделителю на два элемента. Далее для искомого элемента обратиться сначала по его ссылке (например, 5). Потом проверить есть ли ссылка у полученного элемента и если - да, то обратиться к следующему элементу (1). Делать это можно в бесконечном цикле, поставив условием выхода отсутствие ссылки (None).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1058 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.