#python #string #dictionary
Вопрос:
def calculate_average_grade(grades_dictionary):
grades_avg = {}
for key in grades_dictionary.keys():
average = sum(grades_dictionary[key]) / len(grades_dictionary[key])
grades_avg[key] = average
return grades_avg
grades_dictionary = readGrade
avg_grade = calculate_average_grade(grades_dictionary)
print(f' {readGrade} => {avg_grade}')
Мне нужен этот код для печати вывода отдельно, например {"XYZ": [3,2,4,5]} ==> {"XYZ": 3.5}
Мой код выводится вместе, как-
{'PQR': [4.0, 4.0, 4.5, 2.5, 4.5, 3.5], 'LMN': [4.0, 4.0, 3.0, 3.0, 3.0, 3.5]}) => {'PQR': 3.8333333333333335, 'LMN': 3.4166666666666665}
Комментарии:
1. Это должно включать ввод grades_dictionary в блоке кода. Вы ищете что-то похожее на for name в avg_grade: print (имя, градация[имя], avg_grade[имя])
Ответ №1:
Я бы перестроил ваш код. Создайте функцию, которая вычисляет средние значения, и запустите ее в цикле, который выводит средние значения. Альтернативой было бы превратить вашу функцию в генератор и запустить ее в цикле, но это просто сделало бы ее излишне сложной.
Что-то вроде этого должно сработать:
def calculate_average_grade(grades):
return sum(grades) / len(grades)
for key, grades in readGrade.items():
print(f'{{{key!r}: {grades}}} => {{{key!r}: {calculate_average_grade(grades)}}}')
Когда у вас есть строка f, фигурные скобки, которые вы хотите напечатать, буквально должны быть удалены путем их удвоения. Если вам нужны кавычки вокруг строки в формате, распечатайте ее , используя repr
вместо str
, с помощью !r
спецификатора.
С помощью этой формулировки вы сохраняете форматирование и вычисления отдельно в своем коде, делая, по крайней мере, последнее повторно используемым, поскольку оно не привязано к определенному формату данных.
Комментарии:
1. Хорошо. Это может быть более читаемым с помощью для ключа, оценки в readGrade.items() Это также позволяет избежать функции calculate_average_grade, которая должна знать о другой структуре данных, если вы просто передадите ее итеративно.
2. @КенниОстром. Это скорее иллюстрация образа мышления, чем «наилучший подход». Это всегда упражнение для читателя, чтобы понять, как использовать данную информацию. В некоторых случаях может быть лучше иметь более общее среднее значение, которое работает с последовательностью, в других случаях может потребоваться дополнительная информация о данных. Я думаю, что в вашем предложении есть значительная заслуга
3. Да, я сказал, что мне это нравится. Теперь практикуйтесь в том, что вы проповедуете: создайте функцию, которая вычисляет средние значения. Для этого не нужен словарь или ключ, потому что у вас уже есть только оценки.
4. @КенниОстром. Я сделал