在Python中迭代内部字典

2024-05-18 21:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者。我正在练习一个用例,以获得学生的最终分数,该分数存储在字典中。你能告诉我有什么方法可以简化这个吗

 ScoreCard = {'Antony':{'maths':99,'english':33, 'science':100},'Jeff':{'maths':45,'english':99, 'science':73},
        'Mark':{'maths':77,'english':80, 'science':86}}

def sumofMarks(MarkList):
    SumMark = 0
    for k, v in MarkList.items():
        SumMark = SumMark + v
    return SumMark
        
def getMarks(Score, student):
    for k,v in Score.items():
        if student in Score.keys():
            newdic = Score[student]
            finalScore = sumofMarks(newdic)
            print("Final Score of:", student)
            return finalScore
        else:
            print("Student Not found in registry !")
            break            

getMarks(ScoreCard,'Jeff')

Tags: inforenglishdefitemsstudent分数science
2条回答
ScoreCard = {'Antony':{'maths':99,'english':33, 'science':100},'Jeff':{'maths':45,'english':99, 'science':73},
        'Mark':{'maths':77,'english':80, 'science':86}}
name = "Jeff"
if name in ScoreCard.keys():
    for k,v in ScoreCard.items():
        if k==name:
            s = 0
            for k1,v1 in v.items():
                s+=v1
    print("Final Score of :",s)
else:
    print(name,"not found in registry")

您可以使用values()获取字典的所有值,使用sum()获取它们的总和:

ScoreCard = {'Antony': {'maths': 99, 'english': 33, 'science': 100},
             'Jeff': {'maths': 45, 'english': 99, 'science': 73},
             'Mark': {'maths': 77, 'english': 80, 'science': 86}}

def getMarks(Score, student):
    if student in Score:
        print(sum(Score[student].values()))
    else:
        print('Student not found')

getMarks(ScoreCard, 'Jeff')
# 217

相关问题 更多 >

    热门问题