Удалить ключ из словаря в Python, возвращая новый словарь

У меня есть словарь

d = {'a':1, 'b':2, 'c':3} 

Мне нужно удалить ключ, скажем c и вернуть словарь без этого ключа в один вызов функции

 {'a':1, 'b':2} 

d.pop ('c') вернет значение ключа – 3 – вместо словаря.

Мне понадобится одно функциональное решение, если оно существует, поскольку это пойдёт в понимание

3 Solutions collect form web for “Удалить ключ из словаря в Python, возвращая новый словарь”

Как насчет этого:

 {i:d[i] for i in d if i!='c'} 

Он называется « Словарные слова», и он доступен с Python 2.7.

или если вы используете Python старше 2.7:

 dict((i,d[i]) for i in d if i!='c') 

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

 def without(d, key): new_d = d.copy() new_d.pop(key) return new_d 

это будет работать,

 (lambda dict_,key_:dict_.pop(key_,True) and dict_)({1:1},1) 

EDIT это отбросит ключ, если он существует в словаре, и вернет словарь без пары ключ, значение

в python есть функции, которые изменяют объект на месте и возвращают значение вместо измененного объекта, например, функция {} .pop.

мы можем использовать лямбда-функцию, как в примере, или более общий ниже (lambda func: obj: (func (obj) и False) или obj) изменить это поведение и получить ожидаемое поведение.

  • Бесконечно вложенный словарь в Python
  • Преобразование списка в словарь в Python
  • Есть ли причины не использовать упорядоченный словарь?
  • Случайный словарь словаря Python, взвешенный по значениям
  • Python: найти ближайший ключ в словаре от данного ключа ввода
  • ключи переключения и значения в словаре в python
  • Класс с изменением __hash__ по-прежнему работает со словарным доступом
  • Итерация в двух разных словарях одновременно на Python
  • Python - лучший язык программирования в мире.