如何在不知道子字符名称的情况下访问嵌套的dict

时间:2013-10-30 16:09:23

标签: python dictionary

我正在解析很多文件,其中数据存储在嵌套字典中。子文件的名称可能因文件而异。此外,我想我可能需要考虑他们的嵌套的不同长度。不过,我总是知道我需要访问的字典的名称。说,我有口述:

d = {'Unknown2': {'Unkw1': {'INeedYou': {'k': 'v'}}}}
d2 = {'anotherkey': {'INeedYou': {'k': 'v'}}}}

我总是需要深入研究{'k': 'v'}。您能想到除d['Unknown2']['Unkw1']['INeedYou']语法之外的任何其他方式来访问它吗?

我想我可以使用d.keys()获取名称并使用上面显示的方法访问感兴趣的词典,但由于嵌套可能很深,因此访问我需要的词典需要花费不少时间

我认为你们中的一些人可能知道一些巧妙的技巧,可以更轻松地完成工作。

1 个答案:

答案 0 :(得分:2)

我怀疑你可以避免走遍整个字典树,直到找到你找到的钥匙。基本思路是:

def findDict (d, keyName):
    if not isinstance (d, dict): return None
    if keyName in d: return d [keyName]
    for subdict in d.values ():
        r = findDict (subdict, keyName)
        if r: return r