我有一个包含项和标记的元素。元素可以包含更多元素,这些元素也有项和标记,这些元素也可以有项和标记。事先我不知道第一个元素中有多少“嵌套”元素。在
我想用元素作为键将标记和项保存在字典中,如果元素有“嵌套”元素,我希望将该元素及其信息保存在与“父元素”相同的字典条目中。在
到目前为止,我的代码只有在第一个元素有一个嵌套元素,而这个嵌套元素中没有其他嵌套元素的情况下才能工作。代码如下:
def getAllNestedElementInformation(element, nestedDict=None):
infoDict = {'tagName':element.tag}
infoDict.update(getItems(element))
if nestedDict == None:
nestedDict = infoDict
else:
nestedDict['nestedElement'][element] = infoDict
print nestedDict
for nestedElement in element:
nestedDict.update({'nestedElement':collections.defaultdict(dict)})
getAllNestedElementInformation(nestedElement, nestedDict=nestedDict)
我想要
^{pr2}$但我不会比
{'name':'scan', 'nestedElement':{'name:'scanwindow'}}
因为我不知道如何映射“nestedElement”dict中的下一个nestedElement
举例说明我现在拥有什么和我想要什么,当我打印nestedDict时,我得到:
{'index': '0', 'nestedElement': {<Element 'scan' at 0x8068180>: {'tagName': 'scan'}}, 'tagName': 'spectrum', 'id': '1'}
{'index': '0', 'nestedElement': {<Element 'cvParam' at 0x80682a0>: {'name': 'scan start time', 'unitName': 'second', 'tagName': 'cvParam', }}, 'tagName': 'spectrum', 'id': '1'}
我想要:
{'index': '0', 'nestedElement': {<Element 'scan' at 0x8068180>: 'tagName': 'scan', 'nestedElement: {'name': 'scan start time', 'unitName': 'second', 'tagName': 'cvParam', }}, 'tagName': 'spectrum', 'id': '1'}
您的代码没有递归调用。这就是为什么你只能下一级。在
您是否需要将
getAllNestedElementInformation
更改为getInfo
(反之亦然)?在必须在字典中保存getAllNestedElementInformation的返回值。如果有人想知道:这是我把代码改成的:
在我编写的一个工具的配置中,数据的组织方式也完全相同。在
您可能需要查看InternalCfg.py文件:
get_value()
返回一个值。在set_value()
设置一个值。在还有一些其他(helper)函数,比如
append_list()
向列表添加值。在相关问题 更多 >
编程相关推荐