我創建了一個類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()}'。 –