Ошибка при получении значения из списка на Python

Я пишу код для загрузки данных в YAML файл, написал класс, которая будет загружать данные. Но столкнулся с такой ошибкой:

Traceback (most recent call last):
  File "D:\Projects\ProjectsProgramming\PyCharmCommunity\OST\src\quiz\task_settings.py", line 36, in save_task_settings
    self.quiz_activated()
  File "D:\Projects\ProjectsProgramming\PyCharmCommunity\OST\src\quiz\task_settings.py", line 30, in quiz_activated
    self.result.save_exam_result()
  File "D:\Projects\ProjectsProgramming\PyCharmCommunity\OST\src\quiz\exam_result.py", line 18, in save_exam_result
    name_settings_file = self.exam_result[0]["Series"] + self.exam_result[0]["Number"]
                         ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'Series'

Код:

from pathlib import Path
import yaml


class Result:
    def __init__(self):
        super().__init__()
        self.exam_result = []

    def add_data(self, data):
        self.exam_result.append(data)

    @staticmethod
    def get_root_dir():
        return Path(__file__).absolute().parent

    def save_exam_result(self) -> None:
        name_settings_file = self.exam_result[0]["Series"] + self.exam_result[0]["Number"]
        print(name_settings_file)
        with open((self.get_root_dir() / "exam").joinpath(name_settings_file + ".yaml"), "w") as outfile:
            new_dump = yaml.dump(self.exam_result)
            outfile.write(new_dump)
        return None

Пример списка, подаваемого на вход:

[{'CodeEducationalOrganization': 'gfdgd', 'PPECode': 'gdfg', 'NumberPC': 'dgd', 'NumberOption': 'gdgd', 'SettingsOption': '[Без дополнений]', 'CodeActivation': 'gdg'}]

Как исправить данную ошибку?


Ответы (1 шт):

Автор решения: ferz

Ошибка прямо говорит, что внутри словаря нет пары с ключом 'Series'. Также пары не будет и для 'Number' (исходя из примера, подаваемого на вход списка). Чтобы исправить ошибку нужно:

  1. добавить в словарь пары с ключами 'Series' и 'Number'
  2. либо проверить наличие пар с этими ключами
if 'Series' in exam_result[0].keys() and 'Number' in exam_result[0].keys():
    name_settings_file = self.exam_result[0]["Series"] + self.exam_result[0]["Number"]
else:
    <пары отсутствуют>
→ Ссылка