是使用递归函数进行深度优先搜索。以下是一个示例代码:
def search_nested_dict(nested_dict, condition):
result = []
def dfs(dictionary, path):
for key, value in dictionary.items():
if isinstance(value, dict):
dfs(value, path + [key])
else:
if condition(key, value):
result.append(path + [key])
dfs(nested_dict, [])
return result
这个方法通过递归地遍历嵌套字典的键值对,如果值是字典类型,则继续递归遍历;如果值满足条件,则将路径(键的序列)添加到结果列表中。
使用该方法时,需要传入两个参数:nested_dict
表示要搜索的嵌套字典,condition
是一个函数,用于定义搜索的条件。条件函数应该接受两个参数:键和值,并返回一个布尔值,表示是否满足搜索条件。
以下是一个示例用法:
nested_dict = {
'a': {
'b': {
'c': 1,
'd': 2
},
'e': {
'f': 3,
'g': 4
}
},
'h': {
'i': {
'j': 5,
'k': 6
},
'l': {
'm': 7,
'n': 8
}
}
}
def condition(key, value):
return value > 3
result = search_nested_dict(nested_dict, condition)
print(result) # 输出 [['h', 'l', 'm'], ['h', 'l', 'n']]
在这个示例中,我们定义了一个条件函数,要求值大于3。然后调用search_nested_dict
函数进行搜索,返回满足条件的路径列表。最后打印结果为[['h', 'l', 'm'], ['h', 'l', 'n']]
,表示嵌套字典中满足条件的路径为['h', 'l', 'm']
和['h', 'l', 'n']
。
腾讯云相关产品和产品介绍链接地址:
云+社区技术沙龙[第21期]
云端大讲堂
实战低代码公开课直播专栏
Elastic 中国开发者大会
云+社区技术沙龙[第16期]
Elastic 实战工作坊
云+未来峰会
云+社区技术沙龙[第12期]
腾讯技术创作特训营第二季
领取专属 10元无门槛券
手把手带您无忧上云