Ответ 1
Как насчет этого:
{i:d[i] for i in d if i!='c'}
Он назвал Dictionary Comprehensions и доступен с Python 2.7.
или если вы используете Python старше 2.7:
dict((i,d[i]) for i in d if i!='c')
У меня есть словарь
d = {'a':1, 'b':2, 'c':3}
Мне нужно удалить ключ, скажем c и вернуть словарь без этой клавиши в один вызов функции
{'a':1, 'b':2}
d.pop('c') вернет значение ключа - 3 - вместо словаря.
Мне понадобится одно функциональное решение, если оно существует, так как это пойдёт в понимание
Как насчет этого:
{i:d[i] for i in d if i!='c'}
Он назвал Dictionary Comprehensions и доступен с 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)
ИЗМЕНИТЬ это отбросит ключ, если он существует в словаре, и вернет словарь без пары ключ, значение
в python есть функции, которые изменяют объект на месте и возвращают значение вместо измененного объекта, например, функция {}.pop.
мы можем использовать лямбда-функцию, как в примере, или более общий ниже (lambda func: obj: (func (obj) и False) или obj) изменить это поведение и получить ожидаемое поведение.