我正在努力解决如何为列表中的重复标签编写属性的问题。以下是我尝试实现的示例:
a = [('tag1', 'attribute1'), ('tag2', 'attribute2'), ('tag2', 'attribute3'), ('tag5', 'attribute4'), ('tag5', 'attribute5'), ('tag5', 'attribute6')]
我想要的结果是:
(相同标签的属性被写入相同的标签。)
<tag1 attribute1=''>
<tag2 attribute2='' attribute3=''>
<tag5 attribute4='' attribute5='' attribute6=''>
现在我正在考虑先将标签写入如下列表:
tagList = []
for i in a:
tagList.append(i[0])
unique = list(set(tagList))
所以它返回 ['tag1', 'tag2', 'tag5']
,但如何将属性与相应的标签匹配?抱歉,我是 Python 的新手,所以仍在解决很多问题。非常感谢您!
最佳答案
使用defaultdict
。然后遍历您的列表。
from collections import defaultdict
tags = defaultdict(set)
foo = [('tag1', 'attribute1'), ('tag2', 'attribute2'), ('tag2', 'attribute3'), ('tag5', 'attribute4'), ('tag5', 'attribute5'), ('tag5', 'attribute6')]
for tag, attribute in foo:
tags[tag].add(attribute)
此时您将拥有一本字典,其中的键是您的标签,而您的值是一组独特的属性。然后你可以遍历字典,做任何你想做的事。
for tag, attributes in tags.iteritems():
output = ["<", tag]
for attribute in attributes:
output.append(" {}=''".format(attribute))
output.append(">")
print("".join(output))
关于python - python如何将属性写入对应的标签? (文中的详细示例可能有助于更好地理解它。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46320675/