Удалите элемент словаря, если существует ключ

Есть ли другой способ удалить элемент в словаре только в том случае, если данный ключ существует, кроме:

if key in mydict: del mydict[key] 

Сценарий заключается в том, что мне предоставляется коллекция ключей для удаления из данного словаря, но я не уверен, что все они существуют в словаре. На всякий случай я пропустил более эффективное решение.

3 Solutions collect form web for “Удалите элемент словаря, если существует ключ”

Вы можете использовать dict.pop :

  mydict.pop("key", None) 

Обратите внимание, что если второй аргумент, т.е. None , не указан, KeyError поднимается, если ключ не находится в словаре. Предоставление второго аргумента предотвращает условное исключение.

Есть также:

 try: del mydict[key] except KeyError: pass 

Это только 1 поиск вместо 2. Однако, except статей стоят дорого, поэтому, если вы в конечном итоге часто нажимаете предложение except, это, вероятно, будет менее эффективным, чем то, что у вас уже есть.

Подход: вычислять ключи для удаления, мутировать dict

Давайте назовем keys списком / итератором ключей, которые вам нужно удалить. Я бы сделал это:

 keys_to_remove = set(keys).intersection(set(mydict.keys())) for key in keys_to_remove: del mydict[key] 

Вы вычисляете перед всеми затронутыми предметами и оперируете ими.

Подход: вычисляйте ключи, чтобы сохранить, введите новый dict с этими ключами

Я предпочитаю создавать новый словарь для мутирования существующего, поэтому я, вероятно, также подумал бы об этом:

 keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep} 

или:

 keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: mydict[k] for k in keys_to_keep} 
  • os.listdir удаляет характерный акцент
  • Почему «a is b» ведет себя по-разному в интерактивном режиме и когда он запускается из сценария?
  • Прочитайте матрицу Matlab в Python
  • Напишите список в файл csv без цикла в python
  • Почему Python не работает, почему?
  • Каков наиболее эффективный способ копирования внешнего буфера в байты
  • Чтение XML-файла и выбор его атрибутов в Python
  • tweepy error python 2.7
  • Python - лучший язык программирования в мире.