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