我正在寻找一种解决方案,将2个变量的内容放入字典中。一个变量应该作为键,另一个作为值。
这是我的代码:
dom = parseString(data)
macro=dom.getElementsByTagName('macro')
for node in macro:
d={}
id_name=node.getElementsByTagName('id')[0].toxml()
id_data=id_name.replace('<id>','').replace('</id>','')
print (id_data)
cl_name=node.getElementsByTagName('cl2')[0].toxml()
cl_data=cl_name.replace('<cl2>','').replace('</cl2>','')
print (cl_data)
我希望有一个字典,其中id_data作为键,cl_data作为值,而不会在追加时覆盖旧数据。我怎么继续这个?
提前感谢您的帮助!
答案 0 :(得分:2)
from collections import defaultdict
d=defaultdict(list)
dom = parseString(data)
macro=dom.getElementsByTagName('macro')
for node in macro:
id_name=node.getElementsByTagName('id')[0].toxml()
id_data=id_name.replace('<id>','').replace('</id>','')
print (id_data)
cl_name=node.getElementsByTagName('cl2')[0].toxml()
cl_data=cl_name.replace('<cl2>','').replace('</cl2>','')
print (cl_data)
d[id_data].append(cl_data)
d
的键是各种id_data
个,元素是按顺序找到与每个id_data
对应的元素的列表。当然,如果您可以确定所有id_data
都是唯一的,那么您可以使用常规词典:
d={}
for node in macro:
...
d[id_data]=cl_data
这与原始代码的不同之处在于我将字典构造函数从循环中拉出(您不希望每次在循环中替换字典)实际上我实际上将元素插入dict
虽然我猜你也是这样做的,但你只是没有表现出来。