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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:02