我能夠使用重復鍵創建 xml 并遵循建議的答案
python dicttoxml多次使用相同的密鑰
但是當我使用自定義類超過 100 萬條記錄時,它遇到了嚴重的性能問題。
class Node():
"""
creating class to convert dictionary to xml
Returns:
Node : object which contain child tag name
"""
__slots__ = ['_name']
def __init__(self, name):
self._name = name
def __str__(self):
return self._name
def __hash__(self):
return hash(self._name)
我曾嘗試更新節點類(以上),但沒有得到有效的時間改進。
后來我轉到鏈接,該鏈接建議使用默認值,這確實更快,資料處理時間不到 5 分鐘
為什么在使用用戶定義的物件作為鍵時,Python 中的字典查找總是較慢?
{ 'data' : { 'check' : {'error' : ['data1', 'data2'] } } }
<data>
<check>
<error>
<item> data1 </item>
<item> data2 </item>
</error>
</check>
</data>
但我正在尋找 xml 以下方式。反正有沒有得到以下xml。
<data>
<check>
<error> data1 </error>
<error> data2 </error>
</check>
</data>
節點類字典
{'data' : {Node('check') : { Node('error') : "data1", Node('error') : "data2" } } }
with open(fpath, "w") as fxml:
vio_xml_data = dicttoxml(vio_data)
dom = parseString(vio_xml_data)
fxml.writelines(dom.toprettyxml())
uj5u.com熱心網友回復:
這將回傳您正在尋找的內容
from dict2xml import dict2xml
data = {'data':
{'check':
{'error': ["data1", "data2"]}
}
}
xml = dict2xml(data)
print(xml)
輸出
<data>
<check>
<error>data1</error>
<error>data2</error>
</check>
</data>
注意:我沒有在這里使用您的節點類。只要確保字典中的“錯誤”鍵是一個值串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/392893.html
上一篇:將Beautifulsoup4中的網路爬取資料保存為txt檔案后更改行
下一篇:創建子字典鍵值對的笛卡爾積
