python Распечатать словарь максимальной оценки - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужно напечатать MAX Grad для объектов, например:

Первая школа:

Математика: Имя ученика: Джим, Класс: 100

Спорт: Имя ученика: Карен, класс: 88


schools = {"First school " : [{ "Name" : "Jim", "Objects":{"Math" : 100, "sport":80}} ,
                             { "Name" : "karen", "Objects":{"Math" : 80, "sport":88}} ,
                             { "Name" : "rot", "Objects":{"Math" :99, "sport":70}} ,
                             { "Name" : "kevin", "Objects":{"Math" : 80, "sport":70}}],

           "Second school " : [{ "Name" : "Amelia", "Objects":{"Math" : 40, "sport":80}} ,
                             { "Name" : " Cait", "Objects":{"Math" : 50, "sport":70}} ,
                             { "Name" : "Dai", "Objects":{"Math" : 70, "sport":30}} ,
                             { "Name" : "dani", "Objects":{"Math" : 78, "sport":68}}]}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Вы можете определить функцию, которая сортирует на основе оценки в обратном порядке в словаре. Затем выберите первую строку в отсортированном списке:

def print_max(key, d, subject):
    sorted_lst = sorted(d[key], key=lambda x:x['Objects'][subject], reverse=True)
    print('{}: Student Name :{}, Grade :{}'.format(subject, sorted_lst[0]['Name'], sorted_lst[0]['Objects'][subject]))

Затем назовите ее так:

print_max('First school ', schools, 'Math')
print_max('First school ', schools, 'sport')

Вывод:

Math: Student Name :Jim, Grade :100
sport: Student Name :karen, Grade :88
0 голосов
/ 07 февраля 2020

Я думаю, что вы можете сделать что-то подобное. Но в следующий раз приложите свои попытки к вопросу, пожалуйста .:

for k, v in schools.items():
print (k)
max_sport = v[0]
max_math = v[0]
for i in range(1, len(v)):
    if v[i]["Objects"]["Math"] > max_math["Objects"]["Math"]:
        max_math = v[i]
    if v[i]["Objects"]["sport"] > max_sport["Objects"]["sport"]:
        max_sport = v[i]
print("Math: Student Name :{}, Grade :{}".format(max_math["Name"], max_math["Objects"]["Math"]))
print("Sport: Student Name :{}, Grade :{}".format(max_sport["Name"], max_sport["Objects"]["sport"]))
...