Удалить ключ из словаря в Python, возвращая новый словарь - программирование
Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 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')

Ответ 2

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

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

Ответ 3

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

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

ИЗМЕНИТЬ это отбросит ключ, если он существует в словаре, и вернет словарь без пары ключ, значение

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

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