Your description of the data structure does not make much sense, but assuming dicts
is a dictionary that contains a key team
with a value that contains the key name
. You can perform dynamic nested lookup using a list of keys and recursion-
def nested_lookup(d, keys):
if len(keys) == 0:
return d
item = d[keys[0]]
rest_keys = keys[1:]
return nested_lookup(item, rest_keys)
Or, if you prefer succinct-ness, a lambda function-
nested_lookup = lambda d, ks: nested_lookup(d[ks[0]], ks[1:]) if len(ks) > 0 else d
You can use it like-
>>> nested_lookup({ 'team': { 'name': 5 } }, ['team', 'name'])
5
>>> nested_lookup({ 'team': { 'name': 5 } }, ['team'])
{'name': 5}
>>> nested_lookup({ 'team': { 'name': { 'more': [42, 47] } } }, ['team', 'name', 'more'])
[42, 47]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…