MST

星途 面试题库

面试题:Python处理复杂嵌套JSON结构并进行特定数据提取

给定一个复杂嵌套的JSON数据结构,例如包含多层列表和字典嵌套,要求编写Python代码提取出所有满足某个条件(比如某个键的值大于100)的数据,并以特定格式(如列表形式)返回。说明在处理过程中如何应对不同层次的嵌套结构及可能出现的异常情况。
40.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def extract_data(json_data, key, value_condition):
    result = []
    def traverse(data):
        if isinstance(data, dict):
            for k, v in data.items():
                if k == key and value_condition(v):
                    result.append(data)
                traverse(v)
        elif isinstance(data, list):
            for item in data:
                traverse(item)
    try:
        traverse(json_data)
    except (TypeError, KeyError) as e:
        print(f"处理过程中出现异常: {e}")
    return result


# 示例使用
example_json = {
    "a": 101,
    "b": [
        {"a": 99},
        {"a": 102}
    ]
}
extracted = extract_data(example_json, "a", lambda x: x > 100)
print(extracted)

在处理过程中:

  1. 应对不同层次的嵌套结构:通过递归函数traverse来处理不同层次的嵌套结构。如果是字典,就遍历字典的键值对;如果是列表,就遍历列表中的每个元素。这样可以确保对所有层次的嵌套数据都进行检查。
  2. 应对异常情况:在try - except块中捕获可能出现的TypeError(例如对非字典类型使用items()方法)和KeyError(例如在字典中查找不存在的键)异常,并进行适当的处理,这里只是简单打印异常信息,实际应用中可根据需求进行更复杂的处理。