如何在Python中将字符串(uri)拆分为嵌套字典

Dan*_*son 1 python

转换字符串uri(如“ abc / efg / hij / klm”)并输出嵌套词典(如以下示例)的最佳方法是什么?输入uri可以有许多斜线。

{
    'abc': {
        'dfg': {
            'hij': {
                'klm': {}
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mcs*_*ini 5

递归函数

splitstrg = lambda strlist: {strlist.pop(0): splitstrg(strlist) if strlist else {}}
Run Code Online (Sandbox Code Playgroud)

像这样使用:

strg = 'abc/efg/hij/klm'
splitstrg(strg.split('/'))
Run Code Online (Sandbox Code Playgroud)

输出:

{'abc': {'efg': {'hij': {'klm': {}}}}}
Run Code Online (Sandbox Code Playgroud)

高性能版本:

from collections import deque

splitstrg = lambda strdeq: {strdeq.popleft(): splitstrg(strdeq) if strdeq else {}}
splitstrg(deque(strg.split('/')))
Run Code Online (Sandbox Code Playgroud)


小智 5

此代码段将起作用-您使用斜杠标记将字符串分割成列表,然后将其反转,以便从里到外构建嵌套字典:

uri = 'abc/efg/hij/klm'.split('/')
uri.reverse()
nested = {}
for i in uri:
    nested = {i:nested}
Run Code Online (Sandbox Code Playgroud)