【发布时间】:2018-07-30 17:25:33
【问题描述】:
我已经将一个 XML 文件解析到我拥有的字典中
{'NY240': {'Enable_Notifications': 'Enabled',
'Interface': 'LAN 1/3/2',
'ID': '5058',
'Location': 'NY240'
'Speed': '0',
'Validity': '1',
'updateDate': '2018-02-05 14:02:57'},
'SF440': {'Enable_Notifications': 'Enabled',
'Interface': 'WAN 1/2/2',
'ID': '6353',
'Location': 'SF440'
'Speed': '1',
'Validity': '1',
'updateDate': '2018-02-08 16:02:57'},
...}
我明白了:
import xml.etree.ElementTree as ET
tree = ET.parse('data_file.xml')
root = tree.getroot()
dict_s = {}
for child in root:
for key in child:
td={}
for k in key:
td.update({k.tag: k.text})
if k.tag=='Location':
dict_s.update({k.text:td})
else:
pass
我知道我没有在这里粘贴XML文件,但我认为没有必要,它是简单的XML文件,任何在python字典迭代方面比我好一点的人都可以从这里开始。 我需要的是选择那些键(和它们的值),其中内部键“接口”的值包含“WAN”(不是“startswith”)。在这种情况下,将是第二个,SF440。
我已经通过这种方式单独解决了:
new_td = {}
for key, value in dict_s.iteritems():
for k, v in value.iteritems():
if k=='Interface' and 'WAN' in v:
new_td.update({key: value})
但我正在寻找在顶部代码块中实现的解决方案,如果可能的话不分开?
【问题讨论】:
标签: python dictionary elementtree