if dic1.get(p.sku) is None:
является точным эквивалентом того, что вы пытаетесь, кроме KeyError
- поскольку get
возвращает None
, если ключ отсутствует или в None
явнобыл сохранен как соответствующее значение, которое может быть полезно как способ «логически удалить» ключ без фактического изменения набора ключей (вы не можете изменить набор ключей, если вы зацикливаетесь на dict, и при этомпоточно-ориентированный, чтобы сделать это без блокировки и т. п., и т. д., при присваивании значения None
уже существующему ключу * разрешено в циклах и threadsafe)
Если у вас нет таких требований, if p.sku not in dic1:
, как подсказывает @Michael, гораздо предпочтительнее на всех планах (быстрее, лаконичнее, удобочитаемее и т. Д .; -).