我有这条路可以不时改变:
'#/path/to/key'
Run Code Online (Sandbox Code Playgroud)
路径的各个部分未定义,因此该值也很好
'#/this/is/a/longer/path'
Run Code Online (Sandbox Code Playgroud)
我把这个键分成'/'所以我得到了
['#', 'path', 'to', 'key']
Run Code Online (Sandbox Code Playgroud)
我需要在这条路上找到钥匙,假设我的dict是exp,所以我需要到达这里:
exp['path']['to']['key']
Run Code Online (Sandbox Code Playgroud)
我怎么可能知道如何获得这个键?
我建议您使用python-benedict
,一个具有完整键路径支持和许多实用方法的python dict 子类。
你只需要投射你现有的字典:
exp = benedict(exp)
# now your keys can be dotted keypaths too
exp['path.to.key']
Run Code Online (Sandbox Code Playgroud)
这里是图书馆和文档:https : //github.com/fabiocaccamo/python-benedict
注意:我是这个项目的作者
使用递归,卢克......
def deref_multi(data, keys):
return deref_multi(data[keys[0]], keys[1:]) \
if keys else data
last = deref_multi(exp, ['path','to','key'])
Run Code Online (Sandbox Code Playgroud)