如何递归查找Python嵌套字典中指定key并返回所有对应值
实现方案
我们可以写一个通用的递归查找函数,同时支持处理嵌套字典、列表/元组内的嵌套结构,代码如下:
def find_all_values_by_key(obj, target_key): res = [] # 处理字典类型 if isinstance(obj, dict): for k, v in obj.items(): if k == target_key: res.append(v) # 递归处理当前值 res.extend(find_all_values_by_key(v, target_key)) # 处理列表/元组类型,遍历内部元素递归查找 elif isinstance(obj, (list, tuple)): for item in obj: res.extend(find_all_values_by_key(item, target_key)) # 其他基础类型无key,直接返回空列表 return res # 测试用例 dictionary = {"name": "Stephen", "language": "English", "address": "13 Aust road", "teacher_info": [{"name": "Alan", "language": "Italian"}]} output = find_all_values_by_key(dictionary, "language") print(output)
运行上述代码输出结果为:
['English', 'Italian']
补充说明
- 原有代码存在拼写错误:
append被误写为appened,会触发属性不存在报错 - 该递归函数通用性更强,无论目标键嵌套在多少层字典/列表结构里,都能正确提取到对应值
内容的提问来源于stack exchange,提问作者Let'sbecool
相关产品推荐
相关产品推荐

