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

Поиск:

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


Шустрый
*


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

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



Есть словарь вида:
Выделить всёPython
1:
2:
3:
4:
5:
6:
7:
8:
{
    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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

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


 




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


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

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