如何在Python嵌套字典中查找唯一嵌套键'achievements'的值
获取嵌套字典中唯一键对应值的方法
可以写一个递归遍历的函数,针对性处理字典和列表结构,找到目标键就返回对应值:
def find_achievements(data): # 如果当前是字典,先检查是否包含目标键 if isinstance(data, dict): if 'achievements' in data: return data['achievements'] # 遍历字典所有值,递归查找 for value in data.values(): result = find_achievements(value) if result is not None: return result # 如果当前是列表,遍历每个元素递归查找 elif isinstance(data, list): for item in data: result = find_achievements(item) if result is not None: return result # 其他类型(字符串、数字等)直接返回None return None # 用法示例 nested_data = { "user": { "profile": [ {"name": "Alice", "achievements": ["level_up", "complete_task"]}, {"age": 28} ] } } achievements = find_achievements(nested_data) print(achievements) # 输出: ['level_up', 'complete_task']
逻辑说明
- 函数会先判断当前数据类型:
- 若是字典,先检查是否存在
achievements键,存在则直接返回对应值;不存在就遍历所有值,递归调用函数继续查找。 - 若是列表,遍历列表中的每一个元素,递归调用函数查找。
- 遇到字符串、数字等非容器类型,直接返回
None,表示当前路径没找到目标。
- 若是字典,先检查是否存在
- 因为已知
achievements键唯一,所以一旦找到就立即返回,无需继续遍历剩余结构,效率更高。
内容的提问来源于stack exchange,提问作者Inertial Ignorance
相关产品推荐
相关产品推荐

