通过路径获取字典键(字符串)

Elo*_*ati 0 python dictionary

我有这条路可以不时改变:

'#/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)

我怎么可能知道如何获得这个键?

Fab*_*amo 7

我建议您使用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

注意:我是这个项目的作者


Bar*_*der 6

使用递归,卢克......

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)