我希望标题不会太错误或误导;我不完全确定这种东西的名称是什么。
基本上,我一直在使用字典(以及其中的一些子类:defaultdict
和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
不是基本字典,我就会失去它。
好的,所以我可以做一些事情,比如type(old_dict)({.....})
将新创建的字典包装在 old_dict 的类的构造函数中,但这仍然不适用于 defaultdicts,它将返回默认值的函数作为第一个参数。如果它是第二个参数,我可以将一些*args
或一些东西传递给构造函数,但这会使事情复杂化。
我想我的问题是:我可以将部分应用程序应用于构造函数吗?我可以得到那个实例的胆量并调用它的类构造函数,除了items
? 在 Haskell 中,我会做类似的事情,reverse = lambda f, x, *args: f(*args, x)
但这在 Python 中甚至是不允许的。
我错过了什么?对课堂进行一些内省?修修补补__new__
?工厂……什么或别的什么?我在这里感觉很愚蠢,试图得到一些漂亮但实用的东西(har)。
提前感谢您的任何见解。