python递归函数与返回不可变字典

2024-04-24 19:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使函数VisitAllObjects接受不同的文件并返回字典。但我现在所看到的是同一个名字?所以一旦gdata被运行,fdata就会变成gdata。我怎样才能使fdata和gdata与他们的gh5文件中受人尊敬的数据相等呢?在

f = h5py.File('testfile.gh5', 'r')
g = h5py.File('testfile2.gh5', 'r')

def VisitAllObjects(Group,Path, FileInfo=None):
    if FileInfo is None:
        FileInfo = {}
    for i in Group.items():
        if isinstance(i[1], h5py.Group):
            VisitAllObjects(i[1], Path + '/' + i[0])
        else:
            datasetName = Path + '/' + i[0]
            FileInfo[DatasetName] = (Group[DatasetName].shape, Group[DatasetName].dtype)
    return FileInfo

fdata = VisitAllObjects(f,'')
gdata = VisitAllObjects(g,'')

在您的帮助下,当调用visit_all_objects时添加file_info,我可以让它工作。如果您看到任何问题,请告诉我,我仍然需要检查更多,但使用fdata和gdata返回的数据不同,fdata is gdata是错误的。谢谢。在

我让它与以下内容一起工作:

^{pr2}$

Tags: 文件数据pathnoneifisgroupfile
1条回答
网友
1楼 · 发布于 2024-04-24 19:14:18

与其修改字典,不如试着做一个新的,然后修改它。您可以通过将FileInfo = FileInfo.copy()放在函数顶部附近,在处理FileInfo is None的情况之后。在

相关问题 更多 >