【问题标题】:Creating nested dictionaries from a list containing paths从包含路径的列表创建嵌套字典
【发布时间】:2019-03-29 00:40:12
【问题描述】:

我有一个包含路径的列表。例如:

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 也是如此。有人可以帮忙吗?

【问题讨论】:

  • 'path6' 之后的预期输出中有一个多余的右括号。
  • 是的,你是对的。我的错!谢谢!

标签: python-3.x list dictionary nested


【解决方案1】:

类似

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': {}}}}}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2021-04-04
    • 2021-11-20
    相关资源
    最近更新 更多