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
相关产品推荐
相关产品推荐

