我试图以字典的形式从函数返回对象。它似乎在函数内部工作正常,但返回“无”。
=============================================== ==== 打印结果是::
{'tree1': [<ROOT.TH1D object ("root2_tree_tree1_px_hist") at 0x7fa40eec05b0>, <ROOT.TH1D object ("root2_tree_tree1_py_hist") at 0x7fa40eec0cd0>, <ROOT.TH1D object ("root2_tree_tree1_pz_hist") at 0x7fa40eec13f0>], 'tree2': [<ROOT.TH1D object ("root2_tree_tree2_px_hist") at 0x7fa40eec2620>, <ROOT.TH1D object ("root2_tree_tree2_py_hist") at 0x7fa40eec2f20>, <ROOT.TH1D object ("root2_tree_tree2_pz_hist") at 0x7fa40eeb4850>]}
{'tree1': [None, None, None], 'tree2': [None, None, None]}
所以,现在我很困惑。它在功能上打印正确的值,但没有正确返回。 代码如下所示。
def set_histograms():
.
.
.
print(DichistList) # this would correctly print dictionary
return DichistList
def main():
DICHISTLIST = set_histograms()
print(DICHISTLIST) # this is printing "None", why?
答案 0 :(得分:0)
所以,这可能与您正在使用ROOT这一事实有关,并且除非您使用特定的包,否则ROOT和python不会很好。我强烈建议你查看root_numpy,当我在粒子物理学时,我广泛使用它。
示例:读取包含ttree mytree的myfile.root:
from root_numpy import root2array
myarray = root2array( 'myfile.root', 'mytree' ) )
您可以使用以下命令立即将其转换为pandas数据框:
df = pd.DataFrame( myarray )