我尝试转换数据类型,但它不起作用。类型错误:列表索引必须是整数或切片,而不是字典



我一直收到错误的消息。。。我的代码出了什么问题?感谢

我试过转换数据类型,但就是不起作用。TypeError:列表索引必须是整数或切片,而不是字典????

控制台一直在向我展示:

   Traceback (most recent call last):
      File "main.py", line 35, in <module>
        the_winnner_goes_to()
      File "main.py", line 17, in the_winnner_goes_to
        winner_bid_test = int(bidder_list[x]["bidder_offer"])
    TypeError: list indices must be integers or slices, not dict

代码在这里:

from replit import clear
#HINT: You can call clear() to clear the output in the console.
from art import logo
print(logo)
print("Welcome to the secret auction program.")
bidder_list = []
def add_new_bidder(bidder_name, bidder_offer):
 bidders_list = {}
 bidders_list["bidder_name"] = bidder_name
 bidders_list["bidder_offer"] = bidder_offer
 bidder_list.append(bidders_list)
def the_winnner_goes_to():
  winner_bid = 0
  for x in bidder_list:
    winner_bid_test = int(bidder_list[x]["bidder_offer"])
    if winner_bid_test > winner_bid:
      winner_bid = winner_bid_test
      winner_bid = int(bidder_list[x]["bidder_offer"])
  print(winner_bid)
bid_is_on = True
while bid_is_on:
 bidder_name = str(input("What is your name: n"))
 bidder_offer = int(input("What's your bid:n $"))
 other_bidders = input("Are there any other bidders? Type 'Yes' or 'No': n").lower()
 if other_bidders == "yes":
   add_new_bidder(bidder_name, bidder_offer)
   clear()
 else:
   add_new_bidder(bidder_name, bidder_offer)
   bid_is_on = False
   the_winnner_goes_to()
   print(bidder_list)

您的bidders_list是一个dict列表。
所以它就像

bidders_list = [
      {
          "bidder_name"  : xxx,
          "bidder_offer" : yyy
      },
      {
          "bidder_name"  : xxx,
          "bidder_offer" : yyy
      },
      .
      .
      . 
]

所以你正在努力做到这一点,

for x in bidder_list:
    .. bidder_list[x]["bidder_offer"] ..

这是错误的,所以你应该

for x in bidder_list:
    .. x["bidder_offer"] ..

因为x是dict

如果要运行bidder_list[x]["bidder_offer"]

for x in range(len(bidders_list)):
    .. bidder_list[x]["bidder_offer"] .. 

最新更新