如何存储多输入值并关联数组索引?客户票务系统历史查询实现
解决客户票务系统数据覆盖与购买历史查询问题
不用OOP的话,有两种简单可行的方案解决你的问题:
方案一:嵌套字典存储(推荐,查询效率高)
用外层字典管理所有客户,键为客户姓名,值为该客户的所有购票记录列表(每个记录是包含电影、数量、费用的小字典)。这样新增客户时不会覆盖旧数据,查询时直接通过姓名快速定位。
示例代码
# 初始化全局存储容器 customer_records = {} # 添加客户购票记录 def add_ticket(name, movie, quantity, total_cost): # 客户已存在则追加记录,不存在则新建条目 if name in customer_records: customer_records[name].append({ 'movie': movie, 'quantity': quantity, 'total_cost': total_cost }) else: customer_records[name] = [{ 'movie': movie, 'quantity': quantity, 'total_cost': total_cost }] # 查询指定客户的购票历史 def query_history(name): if name not in customer_records: print(f"未找到客户「{name}」的购票记录") return print(f"\n--- {name} 的购票历史 ---") for i, record in enumerate(customer_records[name], 1): print(f"第{i}次:《{record['movie']}》,{record['quantity']}张,总计{record['total_cost']}元")
方案二:列表存储所有记录(实现简单)
用一个全局列表存储每一条购票记录,每条记录是包含客户姓名、电影、数量、费用的字典。查询时遍历列表筛选出目标客户的记录。
示例代码
# 初始化全局存储容器 all_tickets = [] # 添加购票记录 def add_ticket(name, movie, quantity, total_cost): all_tickets.append({ 'customer': name, 'movie': movie, 'quantity': quantity, 'total_cost': total_cost }) # 查询指定客户的购票历史 def query_history(name): print(f"\n--- {name} 的购票历史 ---") found = False for ticket in all_tickets: if ticket['customer'] == name: found = True print(f"《{ticket['movie']}》,{ticket['quantity']}张,总计{ticket['total_cost']}元") if not found: print(f"未找到客户「{name}」的购票记录")
为什么你的原有方案会覆盖数据?
你之前的问题应该是每次新增客户时,直接重新赋值了整个字典(比如每次都写customer_dict = {"name": ...}),而不是在同一个全局容器(外层字典/列表)里添加新的条目或追加记录。上面两种方案都是将所有客户数据统一存在一个全局容器中,不会覆盖已有的旧数据。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

