@The_Beginer

KeyError при добавлений элементов в словарь,как исправить эту ошибку?

По заданию надо выяснить быстрый заказ.
В моём понимании - нужно взять 2 даты(Дата Заказа,Дата Выдачи Заказа).
Подсчитать разницу дней между ними и уже с помощью условий найти самый короткий промежуток дней между датами и следовательно вывести его с фамилией заказчика.

Для этого создал отдельно словарь,где в качестве ключа хранится количество дней,а значение это фамилия заказчика.В рабочем цикле я считаю каждую дату заказа и дату выдачи заказа(dateorder,datetakeorder). После начинаю заносить полученное в словарь вместе с фамилией.То есть ищем разницу дней первой фамилии,нашли и заносим и дни и фамилию в словарь.

def fastorders(self):
            dateformat='%d.%m.%Y'
            print("Вывод тех записей,где был самый маленький срок выполнения заказа:")
            storagedatedict={}# Словарь для хранения полученных дней
            for bookorder in bookorders:
                  dat1=datetime.strptime(bookorder.dateorder,dateformat)
                  dat2=datetime.strptime(bookorder.datetakeorder,dateformat) 
                  difdayz=dat2-dat1
                  dayzstr=str(difdayz)                  
                  storagedatedict[(dayzstr.split()[0]),bookorder.surnm]+=1
            for daiz,srn in storagedatedict.items():
                  print(daiz,srn)
                  if daiz=='1' or '2':
                        print(daiz, ' - ',srn)


Но в конечно итоге, он ругается на KeyError(см. прикреплённый скриншот).
Он видит количество вычтенных дней(см.прикреплённый скриншот), в исключении сразу он увидел и первую фамилию по списку.
Но в тоже время он ничего не видит в так называемом отображении.
При этом как вы можете видеть в функции я словарь инициализировал пусть и значениями по умолчанию,но что пойдёт в словарь в качестве ключа и значения программа пока не знает.

600d2eb1686da733617558.jpeg
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
storagedatedict[(dayzstr.split()[0]),bookorder.surnm]+=1

Вы не создаете элемент словаря, вы пытаетесь изменить уже существующий (который у вас не существует на данный момент)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы