【问题标题】:Issues with KeyError: 0KeyError 问题:0
【发布时间】:2018-05-17 21:07:07
【问题描述】:

我已经发布了我的代码一直显示KeyError: 0 的地方,我已经搜索了所有内容,但找不到解决此问题的方法

    student_scores = {'0':65.0, '1':54.7}
    average_score = 66.0
    i = 0
    for v in student_scores:
      if student_scores[i] >= average_score:
        above_avg_check = "{} {}".format(student_names[i], student_scores[i])
        above_avg.append(above_avg_check)
        print(above_avg_check)
      i += 1 

我不知道该怎么做,i 既是计数器又是 student_scores 的键,所以我可以在 while 循环中使用它。

【问题讨论】:

  • 您的字典为'0' 作为键,但您正在寻找0'0'0 不是一回事
  • 0 和 '0' 不是一回事。

标签: python keyerror


【解决方案1】:

您正在检查一个整数索引,而您的 0 索引实际上是一个字符串。

此代码在 repl 上为我编译,只需在尝试找到它们之前将您的索引值转换为字符串

student_scores = {'0':65.0, '1':54.7}
average_score = 66.0
i = 0
for v in student_scores:
  if student_scores[str(i)] >= average_score:
    above_avg_check = "{} {}".format(student_names[str(i)], student_scores[str(i)])
    above_avg.append(above_avg_check)
    print(above_avg_check)
  i += 1 

【讨论】:

    【解决方案2】:

    您可以使用 .items() 方法并以更简单的方式获取分数。您可以根据学生及其在 for 循环中的分数来格式化字符串。

    student_scores = {'0': 65.0, '1': 54.7}
    average_score = 65.0
    i = 0
    above_avg = []
    
    for student, score in student_scores.items():
        if score >= average_score:
           above_average_check = '{}:  {}'.format(student, score)
           above_avg.append(above_average_check)
           print(above_average_check)
        i += 1
    

    这是你的输出:

    0: 65.0
    

    当您遍历每个键及其对应的值时,这将为您提供您正在寻找的输出。

    【讨论】:

    • 非常感谢西蒙
    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多