转换字符串uri(如“ abc / efg / hij / klm”)并输出嵌套词典(如以下示例)的最佳方法是什么?输入uri可以有许多斜线。
{
'abc': {
'dfg': {
'hij': {
'klm': {}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
递归函数
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)
归档时间: |
|
查看次数: |
52 次 |
最近记录: |