Количество значений ключа для словаря не выходит правильно - PullRequest
0 голосов
/ 29 сентября 2019

При попытке назначить оценки для Test_Scores (который при вычислении среднего значения) возвращает только два назначенных словаря. По какой-то причине последний не появится. Как получить третий словарь для показа?

Test_Scores = [{'test_1': 90, 'test_2': 80, 'test_3': 95},
 {'test_1': 92, 'test_2': 75, 'test_3': 80},
 {'test_1': 80, 'feature_2': 81, 'test_3': 82}]

Grades = ['A', 'B', 'B']

Empty_dict = {}
Empty_dict = dict(zip(Grades, Test_Scores))
print(Empty_dict)

Я ожидаю что-то вроде:

{'A': {'test_1': 90, 'test_2': 80, 'test_3': 95}, 'B': {'test_1': 92, 
'test_2': 75, 'test_3': 80}, {'test_1': 80, 'feature_2': 81, 'test_3': 
82}})

, чтобы продемонстрировать среднее значение по трем тестам - это назначенный ключ.

Однако я получаю:

{'A': {'test_1': 90, 'test_2': 80, 'test_3': 95}, 'B': {'test_1': 80, 
'feature_2': 81, 'test_3': 82}}

1 Ответ

2 голосов
/ 29 сентября 2019

Делая dict(zip(Grades, Test_Scores)), вы переопределяете значение B с последним вхождением, вместо этого вы можете сделать:

Empty_dict = {}
for score, grade in zip(Test_Scores, Grades):
    Empty_dict.setdefault(grade, []).append(score)

print(Empty_dict)

Вывод

{'A': [{'test_1': 90, 'test_2': 80, 'test_3': 95}], 'B': [{'test_1': 92, 'test_2': 75, 'test_3': 80}, {'test_1': 80, 'feature_2': 81, 'test_3': 82}]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...