python - 在创建新的transformdict时在参数dict上执行transform函数

NI6*_*NI6 5 python dictionary

我已经读过这个很酷的新词典类型,即transformdict

我想在我的项目中使用它,通过使用常规dict初始化一个新的转换字典:

tran_d = TransformDict(str.lower, {'A':1, 'B':2})
Run Code Online (Sandbox Code Playgroud)

哪个成功但是当我运行时:

tran_d.keys()
Run Code Online (Sandbox Code Playgroud)

我明白了:

['A', 'B']
Run Code Online (Sandbox Code Playgroud)

在创建新的转换字典时,您如何建议在参数(常规)字典上执行转换函数?为了清楚起见,我想要以下内容:

tran_d.keys() == ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

MSe*_*ert 3

我已经在评论中说过了,但重要的是要意识到这不是我TransformDict想要做的。因此,您可以使用以下自定义实现对其进行子类化keys

class MyTransformDict(TransformDict):
    def keys(self):
        return map(self.transform_func, super().keys())
Run Code Online (Sandbox Code Playgroud)

根据您的 Python 版本,您可能需要使用list()( Python 3) 或为: (Python 2)map提供参数。但应该说明一下原理。supersuper(TransformDict, self)

正如@Rawing 在评论中指出的那样,将会有更多方法无法按预期工作,即__iter__items也可能__repr__