似乎有很多这样的问题,但我找不到这个具体答案。假设我有这样的字典:
{"keyA":
{"a": "blue", "b": {"b1": "sky", "b2": "baby", "b3": "navy"},
"keyB":
{"x": "horse", "y": {"y1": "stallion", "y2": "thoroughbred"}, "z": {"z1": "white", "z2": "black"}}
"keyC": "father"
}
如果我不知道它是父键或字典中父键的位置,是否有任何简单的方法来获取“ z1”(或任何嵌套键)的值?
我在想一个递归函数,在其中我传递“ z1”作为要搜索的键,并且该键一直遍历字典,直到找到匹配项为止,但我无法使其正常工作。
答案 0 :(得分:3)
进行递归函数是一个很好的猜测:
data = {'keyA':
{'a': 'blue', 'b': {'b1': 'sky', 'b2': 'baby', 'b3': 'navy'},
'keyB':
{'x': 'horse', 'y': {'y1': 'stallion', 'y2': 'thoroughbred'}, 'z': {'z1': 'white', 'z2': 'black'}},
'keyC': 'father'
}}
def find_value(data, key):
if not isinstance(data, dict):
return None
try:
return data[key]
except KeyError:
for sub_data in data.values():
sub_value = find_value(sub_data, key)
if sub_value is not None:
return sub_value
return None
print(find_value(data, 'z1'))
# 'white'
print(find_value(data, 'z4'))
# None