Python 从zope目录调用派生的平面列表构建树结构,无需递归

Python 从zope目录调用派生的平面列表构建树结构,无需递归,python,recursion,plone,zope,Python,Recursion,Plone,Zope,我有所有被查找的对象,为解释器提供父对象和对象子对象。我希望在不使用递归的情况下实现这一点,因为zope不喜欢这种传统的递归 我将视图上下文设置为递归的根对象,以开始在上附加对象,然后遍历筛选后的intid/对象列表,查找将此对象作为父对象的对象。从那里我寻找初学者代码,希望有人能帮助我。也许这个小把戏对你和我一样有用。 您可以按PathIndex(getPhysicalPath)限制搜索结果,然后按字母顺序排序: lst = context.Catalog.searchResults(path

我有所有被查找的对象,为解释器提供父对象和对象子对象。我希望在不使用递归的情况下实现这一点,因为zope不喜欢这种传统的递归


我将视图上下文设置为递归的根对象,以开始在上附加对象,然后遍历筛选后的intid/对象列表,查找将此对象作为父对象的对象。从那里我寻找初学者代码,希望有人能帮助我。

也许这个小把戏对你和我一样有用。
您可以按PathIndex(getPhysicalPath)限制搜索结果,然后按字母顺序排序:

lst = context.Catalog.searchResults(path='/parentNodeId')
lst.sort()
print lst
您将看到如下内容:

# /parentNodeId/
# /parentNodeId/folder/
# /parentNodeId/folder/file1.jpg
# /parentNodeId/folder/file2.jpg
# /parentNodeId/folder/file1.jpg
# /parentNodeId/folder2/
# /parentNodeId/folder3/
# /parentNodeId/folder3/file1.jpg
# /parentNodeId/folder3/file2.jpg

我认为,从这个输出中,您可以轻松构建一个树结构

,Zope以什么方式不喜欢传统的递归?我怀疑某处有误会。