Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python minidom解析器:忽略具有相同属性值的标记_Python_List_Attributes_Minidom - Fatal编程技术网

Python minidom解析器:忽略具有相同属性值的标记

Python minidom解析器:忽略具有相同属性值的标记,python,list,attributes,minidom,Python,List,Attributes,Minidom,尝试将xml解析为文本我得到了如下结果 输入文件 <Item id="1"></Item> <Item id="2"></Item> <Item id="1"></Item> <Item id="2"></Item> 我想要的结果是 Item ->1 Item ->2 (忽略重复的id值) 我用来获取当前输出的当前代码是 list = node.getElementsByTagName

尝试将xml解析为文本我得到了如下结果

输入文件

<Item id="1"></Item>
<Item id="2"></Item>
<Item id="1"></Item>
<Item id="2"></Item>
我想要的结果是

Item ->1
Item ->2
(忽略重复的id值)

我用来获取当前输出的当前代码是

list = node.getElementsByTagName('Item')
for item in list:
  output_id = item.getAttribute('id')
  print "Item ->", output_id
我尝试了数千种列表删除方法,但它们都输出双ID。非常感谢您的帮助。
TK

改用字典。将输出_id作为键

如果希望仅具有每个id的最后一个元素:

list = node.getElementsByTagName('Item')
item_dict = {}
for item in list:
  output_id = item.getAttribute('id')
  item_dict [output_id] = item

改用字典。将输出_id作为键

如果希望仅具有每个id的最后一个元素:

list = node.getElementsByTagName('Item')
item_dict = {}
for item in list:
  output_id = item.getAttribute('id')
  item_dict [output_id] = item

首先,每个DOM解析器将返回两个ID,因为它们是不同的元素。 要避免这种情况,请遍历dom树并将结果存储在
dict
对象中。这将只获取最后的项目

UPD:

list = node.getElementsByTagName('Item')
items = {}
for item in list:
  output_id = item.getAttribute('id')
  items[output_id] = item # Put items into dict to use them later.
for id in items:
  print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.
还有更“蟒蛇式”的方式:

list = node.getElementsByTagName('Item')
items = dict((item.getAttribute('id'), item) for item in list)
for id in items:
  print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.

首先,每个DOM解析器将返回两个ID,因为它们是不同的元素。 要避免这种情况,请遍历dom树并将结果存储在
dict
对象中。这将只获取最后的项目

UPD:

list = node.getElementsByTagName('Item')
items = {}
for item in list:
  output_id = item.getAttribute('id')
  items[output_id] = item # Put items into dict to use them later.
for id in items:
  print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.
还有更“蟒蛇式”的方式:

list = node.getElementsByTagName('Item')
items = dict((item.getAttribute('id'), item) for item in list)
for id in items:
  print "Item[%d] -> %s" % (id, items[id]) # Only single item per id left.

只是学习Python。我的背景是C,除了以struct的形式外,没有处理对象。你能发送一个链接到我可以根据我所拥有的代码申请的代码吗?谢谢你的帮助,但是它一直在扔我复制品。Dair T'arg的样本#1是唯一能够输出我所需内容的样本。谢谢你的帮助。只是学习Python。我的背景是C,除了以struct的形式外,没有处理对象。你能发送一个链接到我可以根据我所拥有的代码申请的代码吗?谢谢你的帮助,但是它一直在扔我复制品。Dair T'arg的样本#1是唯一能够输出我所需内容的样本。谢谢你的帮助。只是学习Python。我的背景是C,除了以struct的形式外,没有处理对象。你能发送一个链接到我可以根据我所拥有的代码申请的代码吗?感谢这两个,第一个示例通过将整数描述符更改为字符串来工作,而第二个示例仅打印最后一个id。正是我需要的!只是学习Python。我的背景是C,除了以struct的形式外,没有处理对象。你能发送一个链接到我可以根据我所拥有的代码申请的代码吗?感谢这两个,第一个示例通过将整数描述符更改为字符串来工作,而第二个示例仅打印最后一个id。正是我需要的!