我已经读过这个很酷的新词典类型,即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)
我已经在评论中说过了,但重要的是要意识到这不是我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__。