【问题标题】:Replace value at i in Dictionary替换字典中 i 处的值
【发布时间】:2022-12-03 06:37:47
【问题描述】:

我正在尝试遍历字典,如果它满足要求,要求是 distinction >=70,merit>=60,pass>=50,失败小于 50,则当前通过循环传递的值将替换为正确的分类。

例如,传递的第一个值是 mark_1,它是 20,所以在字典中的 20 处,我希望用“fail”替换 20

module_1="Maths"
module_2="English"
module_3="Science"
module_4="Business"
module_5="PE"

mark_1 =20
mark_2=30
mark_3 =40
mark_4=50
mark_5=60

module_marks = {module_1:int(mark_1), 
module_2: int(mark_2),
module_3: int(mark_3),
module_4: int(mark_4),
module_5:int(mark_5)}

marks= classifygrade.classify_grade(module_marks)

在我的其他课程中,它定义了尝试完成此操作的方法。

def classify_grade(module_marks):
    for i in module_marks.values():
        if i>=70:
            module_marks[i].update("distinction")
        elif i>=60:
            module_marks[i].update("merit")
        elif i>=50:
            module_marks[i].update("pass")
        else:     
            module_marks[i].update("fail")

【问题讨论】:

  • @DanielHao OP 已经在使用字典了。你这是什么意思?

标签: python python-3.x


【解决方案1】:

问题是您正试图通过其值访问字典中的字段。您还试图返回一个新词典,但您正在更改原始词典。您应该创建一个单独的字典并改用dict.items()。像这样:

def classifyMarks(marks):
    result = {}
    for (subject, grade) in marks.items():
        if grade >= 70:
            result[subject] = "Distinction"
        elif grade >= 60:
            result[subject] = "Merit"
        elif grade >= 50:
            result[subject] = "Pass"
        else:
            result[subject] = "Fail"
    return result


marks = {
    "Maths": 20,
    "English": 30,
    "Science": 40,
    "Business": 50,
    "PE": 60
}

marks = classifyMarks(marks)
print(marks)

【讨论】:

  • 如果此答案解决了您的问题,那么您可以将其标记为正确,以帮助指导将来遇到相同问题的其他人。
  • 是的,它现在正在工作。杰出的。我还不能标记正确,说我必须等 5 分钟。谢谢
猜你喜欢
  • 2021-08-31
  • 2011-08-05
  • 1970-01-01
  • 2015-10-30
  • 2013-11-15
  • 1970-01-01
  • 2022-12-06
  • 2014-07-12
  • 2018-09-11
相关资源
最近更新 更多