面试题答案
一键面试优化思路
- 使用哈希表加速查找:原嵌套字典结构在查询特定用户特定订单总金额时,需要逐层遍历字典。可以通过构建一个新的数据结构,以用户 - 订单对作为键,总金额作为值,利用哈希表的快速查找特性(平均时间复杂度为 O(1))来提高查询效率。
- 预处理数据:在构建新数据结构时,需要遍历原始的嵌套字典,提取出每个用户 - 订单对的总金额,并存储到新的数据结构中。
实现代码
orders = {'user1': {'order1': {'items': [{'product': 'A', 'price': 10, 'quantity': 2}, {'product': 'B', 'price': 15, 'quantity': 1}], 'total': 35}, 'order2': {'items': [{'product': 'C', 'price': 20, 'quantity': 3}], 'total': 60}}}
# 构建优化后的数据结构
optimized_orders = {}
for user, user_orders in orders.items():
for order, order_info in user_orders.items():
optimized_orders[(user, order)] = order_info['total']
# 查询函数
def query_total(user, order):
return optimized_orders.get((user, order), None)
# 测试查询函数
print(query_total('user1', 'order1'))
print(query_total('user1', 'order3'))
在上述代码中:
- 首先通过两层循环遍历原始的
orders
字典,将每个用户 - 订单对及其对应的总金额存储到optimized_orders
字典中。 - 然后定义了
query_total
函数,该函数接受用户和订单作为参数,直接从optimized_orders
字典中查询对应的总金额。如果查询不到,则返回None
。