[英]recursively iterate nested python dictionary
我已經像這樣嵌套了python字典。
d = {}
d[a] = b
d[c] = {1:2, 2:3}
我試圖將嵌套的字典遞歸轉換為xml格式,因為里面可以有更多的嵌套字典,例如d[e] = {1:{2:3}, 3:4}
。 我想要的XML格式是這樣的
<root>
<a>b</a>
<c>
<1>2</1>
<2>3</3>
</c>
</root>
到目前為止,我已經使用python代碼使用lxml庫處理嵌套的xml。 但這沒有給我想要的輸出。
def encode(node, Dict):
if len(Dict) == 0:
return node
for kee, val in Dict.items():
subNode = etree.SubElement(node, kee)
del msgDict[kee]
if not isinstance(val, dict):
subNode.text = str(val)
else:
return encode(subNode, val)
任何幫助表示贊賞。 謝謝。
您回憶編碼的方式看起來不正確。 也許這會有所幫助。 為了簡單起見,我只將內容添加到列表(稱為l
)中。 相反,您應該執行etree.SubElement(...)
。
def encode(D, l=[]):
for k, v in D.items():
if isinstance(v, dict):
l2 = [k]
encode(v, l2)
l.append(l2)
else:
l.append([k, v])
我在代碼中找到了錯誤,這是我沒有將遞歸調用返回到原始循環。 進入嵌套元素后,它會“返回”,並且不會回到原始循環。 代替return encode(subNode, val)
,保存一個變量element = encode(subNode, val)
可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.