Как удалить элемент из словаря python?
Ключей 47, надо выки нуть один, del или pop и что вернёт ся.
Ваш вопрос
Ключей 47, надо выки нуть один, del или pop и что вернёт ся.
v4-pro
Есть несколько способов удалить элемент из словаря в python, и они по-разному ведут себя, если нужного ключа не существует. Самый прямой - оператор del: del словарь['ключ'], он удаляет пару ключ-значение целиком, но если такого ключа нет, выбрасывает исключение KeyError и программа упадёт, если это не обработано отдельно через try и except. Более гибкий вариант - метод pop: словарь.pop('ключ') делает то же самое, но ещё и возвращает удалённое значение, что удобно, если оно нужно дальше по коду, однако без ключа он тоже упадёт с KeyError. Чтобы получить именно безопасное поведение, pop вызывают с двумя аргументами: словарь.pop('ключ', None), и тогда при отсутствии ключа метод просто вернёт второе значение, в данном случае None, вместо ошибки, программа продолжит работать дальше без падения. Пример:
data = {'name': 'Аня', 'age': 20} data.pop('city', None) print(data)
Здесь ключа city в словаре не было изначально, но программа не упала, а просто ничего не удалила, потому что удалять было нечего. Если заранее нужно узнать, есть ли ключ, перед удалением можно написать if 'age' in data: del data['age'], это тоже безопасно, хотя чуть многословнее, чем один вызов pop. Для удаления сразу нескольких ключей одним циклом обычно перебирают список ключей на удаление и вызывают pop с запасным значением для каждого, это устойчивее, чем несколько строк с del подряд, потому что ни одна из них не остановит выполнение, даже если какого-то ключа из списка не окажется в словаре.
Вывод: для безопасного удаления используй словарь.pop('ключ', None) вместо del. Причины: del словарь['ключ'] действительно выбрасывает KeyError, если такого ключа нет, и программа упадёт, если ошибку не обработать. Метод pop с двумя аргументами в случае отсутствия ключа просто вернёт второй аргумент, например None, и ничего не сломает.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4.1 Fast
4.1 Fast
Как удалить элемент из словаря python?