You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何存储多输入值并关联数组索引?客户票务系统历史查询实现

解决客户票务系统数据覆盖与购买历史查询问题

不用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 23:54:56