我创建了一个类MyClass
,其中包含大量的仿真数据。该课程将模拟结果归类为具有相似结构的不同模拟。结果可以用MyClass.get(foo)
方法检索。它返回一个带有模拟ID /数组对的字典,对于每个模拟,数组的值为foo
。如何在python中创建自己的映射类型
现在我想在我的类中实现一个方法来将所有函数应用于foo
的所有数组。它应该返回一个带有simulationID/function(foo)对的字典。
对于不需要附加参数的函数,我发现了以下的解决方案非常满意(注释总是欢迎:-)):
def apply(self, function, variable):
result={}
for k,v in self.get(variable).items():
result[k] = function(v)
return result
但是,对于需要额外的参数,我们没有看到一个功能如何以优雅的方式做到这一点。一个典型的操作将与bar
像np.trapz(foo, x=bar)
,其中两个foo
和bar
可以MyClass.get(...)
我想在这个方向retreived x值foo
整合:
def apply(self, function_call):
"""
function_call should be a string with the complete expression to evaluate
eg: MyClass.apply('np.trapz(QHeat, time)')
"""
result={}
for SID in self.simulations:
result[SID] = eval(function_call, locals=...)
return result
的问题是,我不知道如何传递本地映射对象。或者我正在寻找一个错误的方向。预先感谢您的帮助。
Roel
你的第一个例子可以简化dpwn为一个字典表达式:'{k:function(v)for k,v in self。获得(可变).items()}'。 –