面试题答案
一键面试设计思路
- 函数参数设计:使用一个位置参数作为数据处理规则的标识符,使用
*args
来接受任意数量的复杂数据结构实参。 - 处理规则映射:通过字典将处理规则标识符映射到对应的处理函数,这样易于添加新的处理规则,符合扩展性要求。
- 性能优化:在具体的处理函数中,尽量使用高效的Python数据结构操作和算法,避免不必要的循环嵌套等操作。
核心代码实现
# 定义具体的数据处理函数
def process_data_type1(data):
result = []
for item in data:
if isinstance(item, dict):
for key, value in item.items():
if isinstance(value, list):
result.extend(value)
return result
def process_data_type2(data):
new_data = []
for item in data:
if isinstance(item, list):
new_data.append(len(item))
return new_data
# 定义主函数,根据标识符调用相应处理函数
def process_data(rule_identifier, *args):
rule_mapping = {
'type1': process_data_type1,
'type2': process_data_type2
}
if rule_identifier not in rule_mapping:
raise ValueError(f"Unsupported rule identifier: {rule_identifier}")
all_results = []
for data in args:
result = rule_mapping[rule_identifier](data)
all_results.append(result)
return all_results
可以这样调用函数:
data1 = [{"key1": [1, 2, 3]}, {"key2": [4, 5]}]
data2 = [[1, 2], [3, 4, 5]]
result = process_data('type1', data1, data2)
print(result)
result = process_data('type2', data1, data2)
print(result)