Python将字典追加到列表时出现覆盖而非新增问题如何解决?
问题根因
你的问题确实是缩进错误导致的,核心问题是silent_dict列表的定义放在了while循环的内部:
- 每次循环执行时都会把
silent_dict重新初始化为空列表,所以之前存储的竞拍者信息都会被清空,自然只会保留最新一次的条目。 - 你之前写的旅行日志代码里,
travel_log是定义在全局作用域、函数调用逻辑的外层,不会随着函数调用重复初始化,所以可以正常追加条目。
修复方案
把silent_dict的定义移到while循环外层即可,同时建议把add_new_bid函数的定义也移到全局作用域,避免每次循环重复定义函数。
修复后的代码如下:
import os from art import logo clear = lambda: os.system('clear') myFlag = True # silent_dict移到循环外全局作用域定义 silent_dict = [] print("Welcome to the Silent Auction....") print(logo) # 函数定义移到循环外,避免重复初始化 def add_new_bid(name, bid): new_entry = {"name": name, "bid": bid} silent_dict.append(new_entry) print(silent_dict) while myFlag: name = input("Enter your name, Bidder: ") bid = int(input("Enter your Bid: £")) clear() add_new_bid(name, bid) more_bids = input("Are there any more bidders? Type Yes or No: ") if more_bids == "No": myFlag = False break
内容的提问来源于stack exchange,提问作者Liam Coates
相关产品推荐
相关产品推荐

