辞書があります
d = {'a':1, 'b':2, 'c':3}
cのようにキーを削除して、1回の関数呼び出しでそのキーなしで辞書を返す必要があります
{'a':1, 'b':2}
d.pop( 'c')は、辞書の代わりにキー値-3-を返します。
これが理解に入るので、それが存在する場合、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')
自分で巻いてみませんか?これは、辞書内包表記を使用して新しいものを作成するよりも高速です。
def without(d, key):
new_d = d.copy()
new_d.pop(key)
return new_d
>>> a = {'foo': 1, 'bar': 2}
>>> b = a.pop('foo'); a
{'bar': 2}
これでうまくいきます
(lambda dict_,key_:dict_.pop(key_,True) and dict_)({1:1},1)
編集これは、辞書に存在する場合はキーをドロップし、キーと値のペアなしで辞書を返します
pythonでは、オブジェクトを適切に変更し、変更されたオブジェクトの代わりに値を返す関数があります。{}。pop関数がその例です。
例のようにラムダ関数を使用するか、以下のより一般的な(lambda func:obj:(func(obj)and False)またはobj)を使用してこの動作を変更し、期待される動作を取得できます。