У меня есть таблица, которую я пытаюсь импортировать данные в набор вложенных словарей python. По существу, в таблице есть столбцы для сайта, здания, пола, комнаты, ряда и стойки. Я хотел бы структуру данных, чтобы выглядеть следующим образом:Импорт данных excel во вложенный словарь
sites = [
{
"name": "",
"descr": "",
"buildings": [
{
"name": "",
"descr": "",
"floors": [
{
"name": "",
"descr": "",
"rooms": [
{
"name": "",
"descr": "",
"rows": [
{
"name": "",
"descr": "",
"racks": [
{
"name": "",
"descr": ""
}
]
}
]
}
]
}
]
}
]
}
]
Пример таблицы будет:
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| site | site_descr | building | building_descr | floor | floor_descr | room | room_descr | row | row_descr | rack | rack_descr | rack_dn |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc1 | Data Center 1 | alpha | Alpha Building | 1 | Floor 1 | 100 | Room 100 | A | Row A | A5 | Rack A5 | uni/fabric/site-dc1/building-alpha/floor-1/room-100/row-A/rack-A5 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc1 | Data Center 1 | alpha | Alpha Building | 1 | Floor 1 | 100 | Room 100 | A | Row A | A5 | Rack A5 | uni/fabric/site-dc1/building-alpha/floor-1/room-100/row-A/rack-A5 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc1 | Data Center 1 | alpha | Alpha Building | 1 | Floor 1 | 200 | Room 200 | A | Row A | A5 | Rack A5 | uni/fabric/site-dc1/building-alpha/floor-1/room-200/row-A/rack-A5 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc1 | Data Center 1 | alpha | Alpha Building | 1 | Floor 1 | 100 | Room 100 | B | Row B | B5 | Rack B5 | uni/fabric/site-dc1/building-alpha/floor-1/room-100/row-B/rack-B5 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc1 | Data Center 1 | alpha | Alpha Building | 2 | Floor 2 | 100 | Room 100 | A | Row A | A7 | Rack A7 | uni/fabric/site-dc1/building-alpha/floor-2/room-100/row-A/rack-A7 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
| dc2 | Data Center 2 | beta | Beta Building | 5 | Floor 5 | 200 | Room 200 | B | Row B | B5 | Rack B5 | uni/fabric/site-dc2/building-beta/floor-5/room-200/row-B/rack-B5 |
+------+---------------+----------+----------------+-------+-------------+------+------------+-----+-----------+------+------------+-------------------------------------------------------------------+
Что является лучшим способом, чтобы получить это в моей структуре данных? Модуль pyexcel может импортировать записи, которые по существу создают список словарей с каждой строкой в виде записи в списке. У меня возникают проблемы с логикой для реструктуризации этого ...
Должен ли я инициализировать структуру перед циклами for? Должен ли я просто строить структуру, когда я ее заполняю? Если я инициализирую структуру пробелами, как показано ниже, мне нужно будет убедиться, что моя первая строка заполняет эти пробелы, что заставляет меня думать, что последний может быть лучшим вариантом.
Этот вопрос принесет большую пользу из примера [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve). Это облегчает нам помощь. В частности, нет данных о образцах и никакого кода, который вы уже пробовали. –
@StephenRauch Я обновил свой пост с электронной таблицы, с которой я работаю. У меня пока нет никакого реального кода, потому что у меня возникают проблемы даже с началом работы. Я чувствую, что мне нужно использовать параметр слова «setdefault», чтобы сделать некоторые из этого ..... – mikey