Перебирать список внутри словаря - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в Python, и я пытаюсь перебрать словарь внутри списка внутри словаря (я знаю, что это сбивает с толку).

my_dict = {"John": [{"class": "math", "score": 100, "year": 2014}, {"class": "english", "score": 85, "year": 2015}], 
"Timmy": [{"class": "math", "score": 87, "year": 2014}, {"class": "english", "score": 91, "year": 2015}], 
"Sally":[{"class": "math", "score": 95, "year": 2014}]}

Мне нужно создать новый словарь фамилии студента и их совокупных баллов (у Салли только один балл).

Результат будет выглядеть следующим образом:

new_dict = {"John": 185, "Timmy": 178, "Sally": 95}

Любая помощь или руководство будет с благодарностью!

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Я пытаюсь написать программу для решения этого дела.

score_dict = {}
for name in my_dict:
    score_dict[name] = 0
    class_items = my_dict[name]
    for class_item in class_items:
        score_dict[name] += class_item['score']

print score_dict
0 голосов
/ 06 апреля 2020

Используйте словарь для понимания:

{k: sum(x['score'] for x in v) for k, v in my_dict.items()}

Код :

my_dict = {"John": [{"class": "math", "score": 100, "year": 2014}, {"class": "english", "score": 85, "year": 2015}], 
"Timmy": [{"class": "math", "score": 87, "year": 2014}, {"class": "english", "score": 91, "year": 2015}], 
"Sally":[{"class": "math", "score": 95, "year": 2014}]}

new_dict = {k: sum(x['score'] for x in v) for k, v in my_dict.items()}
# {'John': 185, 'Timmy': 178, 'Sally': 95}
...