タイトルが間違っていたり誤解を招いたりしていないことを願っています。この種の名前が何であるかは完全にはわかりません。
基本的に、私は辞書(およびそのいくつかのサブクラス:defaultdict
and OrderedDict
、たとえば)で多くの作業を行ってきました.さまざまな種類の辞書。理想的には、これを迅速に (つまり、ある程度の最適化を行って)、もちろんエレガントに実行したいと考えています。これが私が今持っているものの例です:
def filter_dict(old_dict, keep_keys):
return {k:v for k,v in old_dict.items() if k in keep_keys}
これはうまく機能しますがold_dict
、基本的な辞書以外の場合は、それを失います。
さて、新しく作成された辞書を old_dict のクラスのコンストラクターでラップするようなことはできますが、デフォルト値を返す関数を最初の引数としてtype(old_dict)({.....})
取る defaultdicts ではまだ機能しません。それが 2 番目の引数である場合、コンストラクターに何らかのものを渡すことができますが、これは複雑になります。*args
私の質問は、コンストラクターへの部分的なアプリケーションを取得できますか? そのインスタンスの内臓を取得し、そのクラス コンストラクターを、items
. Haskell では次reverse = lambda f, x, *args: f(*args, x)
のようなことを行いますが、Python では許可されていません。
私は何が欠けていますか?クラスへの内省?いじくり回す__new__
?工場...何か?ここでは、きれいだが機能的なものを手に入れようとしているのは本当にばかげているように感じます(har)。
洞察をお寄せいただきありがとうございます。