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

Python字典中为已有姓名追加捐款列表时被覆盖的问题求助

问题解决:捐款追踪脚本中覆盖已有捐款记录的问题

你的代码核心问题在于:无论输入的姓名是否已存在,都会执行people_db[name_person] = list(),直接将原有捐款列表替换为空列表,后续添加的新捐款自然会覆盖之前的记录——这和append/extend方法本身无关,是逻辑顺序错误导致的。

修改后的代码

people_db = {'Bob': [600.0],
             'Fred': [645.0, 231.0, 768.0],
             'Sam': [4200.0, 5002.0, 100.0, 4302.0],
             'Faith': [742.0, 842.0, 542.0],
             'John': [432.0, 754.0, 10000]}

def add_name():
    name_person = str.lower(input("Enter Full Name or 'list': "))
    if name_person == "list":
        for key in people_db.keys():
            print(key)
    else:
        # 仅当姓名不存在时,才创建新的空列表
        if name_person not in people_db:
            people_db[name_person] = []
        # 转换为float,和原有数据类型保持一致
        donation = float(input("Donation Amount: "))
        # 直接向已有列表追加捐款
        people_db[name_person].append(donation)

关键修改点

  • 新增if name_person not in people_db判断,避免覆盖已有用户的捐款记录
  • 将捐款金额转为float,和数据库中已有的数值类型统一(原数据包含整数和浮点数,统一类型更规范)
  • 单个元素用append比extend([...])更简洁,效果完全一致

内容的提问来源于stack exchange,提问作者Parker Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:41:05