Python:在嵌套字典中设置键
与我真正想提出的问题相比,这个标题相当简单,但我不太确定如何用词。 对于我正在制作的XML解析模块,我需要它根据XML文档的确切结构添加键和属性,例如:Python:在嵌套字典中设置键,python,loops,dictionary,nest,Python,Loops,Dictionary,Nest,与我真正想提出的问题相比,这个标题相当简单,但我不太确定如何用词。 对于我正在制作的XML解析模块,我需要它根据XML文档的确切结构添加键和属性,例如: <Person> <Name>Someone</Name> <Age>25</Age> <Skills> <Skill>Projectile vomiting</Skill> </Skills>
<Person>
<Name>Someone</Name>
<Age>25</Age>
<Skills>
<Skill>Projectile vomiting</Skill>
</Skills>
</Person>
…程序不知道XML文档的确切结构。它可以有任意数量的属性,任意数量的嵌套属性
使用
Dict["key"]["anotherkey"]["yetanotherkey"] = Value
不起作用,因为我不知道XML文档是否使用3个属性嵌套,或者这些属性嵌套是否包含更多的嵌套
我的想法是每次解析器遇到嵌套的开始时打开一个节点,换句话说,如果解析器到达
<Skill>
它将在内部分配属性
<Skills> and </Skills>
口述[个人][技能],以及何时口述
</Skills>
遇到时,它将关闭节点,并继续为Dict[Person]分配属性,但我不知道如何实现,但我可以获得文档的所有值、属性和节点
如何在不知道XML文档的确切结构的情况下以正确的格式嵌套字典,如上图所示?您可以使用与您在XML文档中的位置相对应的堆栈。每次遇到打开的标记时,都会将其推到堆栈上,并开始填充stack.peek处的值的属性。当您遇到结束标记时,您会从堆栈中弹出最后一个标记,并知道您现在将在堆栈的新顶部填充标记的属性。您的问题是什么?对文章进行了编辑。很抱歉将XML结构存储在嵌套dict中是否重要?若然,原因为何?在Python中使用XML有更方便的方法。如果堆栈有,比如说,[Person,Skills],调用peek方法不只是返回Skills,从而将值赋给Dict[Skills],而不是Dict[Person][Skills]?我明白你的意思了。您可以将引用保存到堆栈上的词典中。每次遇到打开的标记时,您都会创建一个新的嵌套,例如prevLevel['Skills']={},并将新的dict推送到堆栈上。
</Skills>