python 中的嵌套索引

Nested indexing in python

我有一个 python 字典,它的一些(但不是全部)值也是字典。

例如:

    d = {'a' : 1,
         'b' : {'c' : 3, 'd' : 'target_value'}
        }

传递键以达到任何目标值的最佳方式是什么?像 retrieve(d, (key, nested_key, ...)) 这样的东西 retrieve(d, ('b','d')) 会 return target value.

这里更好的选择是找到一种规范化数据结构的方法,但如果由于某种原因不能,您可以按顺序访问每个键。

例如:

def nested_getter(dictionary, *keys):
    val = dictionary[keys[0]]
    for key in keys[1:]:
        val = val[key]
    return val
d = {'a' : 1,
     'b' : {'c' : 3, 'd' : 'target_value'}
    }
print(nested_getter(d, 'b', 'd'))

你也可以递归地做:

def nested_getter(dictionary, *keys):
    val = dictionary[keys[0]]
    if isinstance(val, dict):
        return nested_getter(val, *keys[1:])
    else:
        return val