← Все вопросы

Чем d.pop(k) отличается от del d[k]?

Задан 10 месяцев назад568 просмотров3 ответа
12

Оба удаляют ключ из словаря. В каких случаях между ними реальная разница и что выбрать?

3 ответа

26
✓ Принятый ответ — помог автору

Главных отличий два:

  1. pop ВОЗВРАЩАЕТ удалённое значение, del — нет (это инструкция, не выражение).
  2. У pop есть второй аргумент-дефолт: d.pop(k, None) не упадёт, если ключа нет. А del d[k] на отсутствующем ключе всегда кидает KeyError.
v = d.pop("a")        # удалили и забрали значение
d.pop("missing", 0)   # ключа нет — вернёт 0, не упадёт
del d["a"]            # просто удалить, без значения

Итого: нужно значение или защита от отсутствия ключа — pop. Просто стереть существующий ключ — del чуть короче.

8

pop отдаёт значение и умеет дефолт, del — нет.

-5

Разницы почти нет, бери любой.

Арина Борисова Разница есть: del без ключа падает KeyError, а pop с дефолтом — нет. И pop возвращает значение. · 10 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект