Создание вложенных словарей из списка, содержащего пути - PullRequest
0 голосов
/ 24 октября 2018

У меня есть список, содержащий пути.Например:

links=['main',
 'main/path1',
 'main/path1/path2',
 'main/path1/path2/path3/path4',
 'main/path1/path2/path3/path5',
 'main/path1/path2/path3/path4/path6']

Я хочу создать вложенный словарь для хранения этих путей в порядке.Ожидаемый результат:

Output = {‘main’: {‘path1’: {‘path2’: {‘path3’: {‘path4’: {‘path6’: {} }},‘path5’:{}}}}}

Я новичок в программировании на Python (v 3. +) и не могу его решить.Это сбивает с толку после того, как я достигаю пути 3, поскольку есть путь 4 (с вложенным путем 6) и путь 5.Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 24 октября 2018

Что-то вроде

tree = {}
for path in links:                # for each path
    node = tree                   # start from the very top
    for level in path.split('/'): # split the path into a list
        if level:                 # if a name is non-empty
            node = node.setdefault(level, dict())
                                  # move to the deeper level
                                  # (or create it if unexistent)

С links, определенным выше, это приводит к

>>> tree
{'main': {'path1': {'path2': {'path3': {'path4': {'path6': {}}, 'path5': {}}}}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...